Spring提供了许多内置事务管理器实现:

  • DataSourceTransactionManager位于org.springframework.jdbc.datasource包中,数据源事务管理器,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理;
  • JdoTransactionManager位于org.springframework.orm.jdo包中,提供对单个javax.jdo.PersistenceManagerFactory事务管理,用于集成JDO框架时的事务管理;
  • JpaTransactionManager位于org.springframework.orm.jpa包中,提供对单个javax.persistence.EntityManagerFactory事务支持,用于集成JPA实现框架时的事务管理;
  • HibernateTransactionManager位于org.springframework.orm.hibernate3包中,提供对单个org.hibernate.SessionFactory事务支持,用于集成Hibernate框架时的事务管理;该事务管理器只支持Hibernate3+版本,且Spring3.0+版本只支持Hibernate 3.2+版本;
  • JtaTransactionManager位于org.springframework.transaction.jta包中,提供对分布式事务管理的支持,并将事务管理委托给Java EE应用服务器事务管理器;
  • OC4JjtaTransactionManager位于org.springframework.transaction.jta包中,Spring提供的对OC4J10.1.3+应用服务器事务管理器的适配器,此适配器用于对应用服务器提供的高级事务的支持;
  • WebSphereUowTransactionManager位于org.springframework.transaction.jta包中,Spring提供的对WebSphere 6.0+应用服务器事务管理器的适配器,此适配器用于对应用服务器提供的高级事务的支持;
  • WebLogicJtaTransactionManager位于org.springframework.transaction.jta包中,Spring提供的对WebLogic 8.1+应用服务器事务管理器的适配器,此适配器用于对应用服务器提供的高级事务的支持。

DataSourceTransactionManager为例管理iBATIS或MyBatis框架的事务

在applicationContext.xml中配置:

<!-- 事务管理器 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 配置事务特性 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" isolation="DEFAULT"
rollback-for="Exception" />
<tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT"
rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"
rollback-for="Exception" />
<tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT"
rollback-for="Exception" />
<tx:method name="create*" propagation="REQUIRED" isolation="DEFAULT"
rollback-for="Exception" />
<tx:method name="getExpressBuss" propagation="REQUIRED"
isolation="DEFAULT" rollback-for="Exception" />
<tx:method name="getInvoiceInfo" propagation="REQUIRED"
isolation="DEFAULT" rollback-for="Exception" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice> <!-- 配置哪些类的方法需要进行事务管理 -->
<aop:config>
<aop:pointcut id="allServiceMethod"
expression="execution(* com.qiqi.web.service..*.*(..)) || execution(* test.service..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethod" />
</aop:config>

可以根据不同的模块配置不同的事务传播特性

最新文章

  1. HTML meta锚点跳转 小tips
  2. javascript基础二数据类型
  3. Nginx上传文件失败
  4. c# 类型拷贝
  5. sql 数字转人民币大写函数(两种方法)
  6. 实验六 序列信号检测器的VHDL设计
  7. ElasticSearch Filter Aggregations
  8. HDU4870 Rating(概率)
  9. VCS仿真查看coverage
  10. Javascript语言精粹之正则表达式知识整理
  11. Swift的基础之关于“!”和“?”的使用介绍
  12. fab 菜单实现—圆形、半圆、扇形、直线、射线
  13. 定点CORDIC算法求所有三角函数及向量模的原理分析、硬件实现(FPGA)
  14. (set stringstream)单词数 hdu2072
  15. filter的dispatcher节点
  16. 【BZOJ1449】[JSOI2009]球队收益(网络流,费用流)
  17. gradle build scan
  18. Java类的设计----多态性及其应用
  19. 理解JavaScript中的事件流
  20. ios6:新特征介绍

热门文章

  1. docker swarm的应用----docker集群的构建
  2. 006---Linux用户、群组和权限
  3. PWA-网络
  4. 浅谈fail-fast机制
  5. 22-Consent 确认逻辑实现
  6. UPDATE_ENTITY実行
  7. C/S与B/S 区别以及优缺点
  8. [Jmeter并发报错解决方案]org.apache.http.NoHttpResponseException: 10.0.4.147:8000 failed to respond
  9. LeetCode:35. Search Insert Position(Easy)
  10. Visual Studio 2015 Test Explorer does not show anything