首页 > 代码库 > spring支持的事务管理

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支持的事务管理