spring支持的事务管理
Posted 小鸭嘎嘎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring支持的事务管理相关的知识,希望对你有一定的参考价值。
1、编程式事务:
需在spring.xml配置文件中,
1、配置数据源、
2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置;
3、需编写事务管理器 transcationManager, 对象里面注入的是数据源对象;
4、配置事务模板 transactionTemplate ,对象里面注入的是事务管理器对象;
5、需配置持久化dao,需注入 持久化模板对象和 事务模板对象 两个;
6、在dao层的对象中,所有的增删改需放在 事务模板的内部类中 实现持久化操作;
2、声明式事务 需在spring.xml文件配置:
1、配置数据源;
2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置;
3、配置事务管理器 transcationManager, 对象里面注入的是数据源对象;
4、通过aop配置声明式事务(切入的规则,切入点两个标签)
5、配置持久层dao, 需注入 持久化模板对象即可。
6、在dao层,所有的增删改使用持久化模板来完成数据的持久化操作; 声明式相对编程式: 代码更宽松,只配置在xml文件中即可,利用aop的横切规则即能完成事务的操作; 跟持久层的代码没有耦合;
3、注解式事务 需在spring.xml文件配置:
1、配置数据源;
2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置;
3、需编写事务管理器 transcationManager, 对象里面注入的是数据源对象;
4、使用<tx:annotation-driven transaction-manager="transcationManager"/> 注解,指向事务管理器;
5、持久层dao的代码,使用@Repository 注解, 然后在spring.xml文件中配置包扫描;
6、持久层dao类中的所有增删改(需要事务支持的方法),方法的上方需加@Transactional 注解。
2中的声明式事务中方法的配置属性: <tx:method name="add*" propagation="REQUIRED" timeout="-1" no-rollback-for="" read-only="false" rollback-for="" isolation="DEFAULT" />
name: 匹配的方法名称
propagation:事务的传播属性,一共有7个值(REQUIRED,REQUIRED_NEW,SUPPORTS, MANDATORY,NOT_SUPPORTED,NEVER,NESTED)
timeout: 事务执行的事件控制, 超时时间;
rollback-for: 见到什么异常就回滚;
no-rollback-for: 见到什么异常一定不回滚;
isolation: 事务的传播属性,一共有4个值(default,read-only,read-write,transaction)
read-only: 只读;
以上是关于spring支持的事务管理的主要内容,如果未能解决你的问题,请参考以下文章
学习笔记——Spring声明式事务管理;Spring中支持事务管理;使用声明式事务管理;Spring声明式事务管理属性