Spring事务管理Transaction
2024-10-19 05:25:20
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>
可以根据不同的模块配置不同的事务传播特性
最新文章
- HTML meta锚点跳转 小tips
- javascript基础二数据类型
- Nginx上传文件失败
- c# 类型拷贝
- sql 数字转人民币大写函数(两种方法)
- 实验六 序列信号检测器的VHDL设计
- ElasticSearch Filter Aggregations
- HDU4870 Rating(概率)
- VCS仿真查看coverage
- Javascript语言精粹之正则表达式知识整理
- Swift的基础之关于“!”和“?”的使用介绍
- fab 菜单实现—圆形、半圆、扇形、直线、射线
- 定点CORDIC算法求所有三角函数及向量模的原理分析、硬件实现(FPGA)
- (set stringstream)单词数 hdu2072
- filter的dispatcher节点
- 【BZOJ1449】[JSOI2009]球队收益(网络流,费用流)
- gradle build scan
- Java类的设计----多态性及其应用
- 理解JavaScript中的事件流
- ios6:新特征介绍
热门文章
- docker swarm的应用----docker集群的构建
- 006---Linux用户、群组和权限
- PWA-网络
- 浅谈fail-fast机制
- 22-Consent 确认逻辑实现
- UPDATE_ENTITY実行
- C/S与B/S 区别以及优缺点
- [Jmeter并发报错解决方案]org.apache.http.NoHttpResponseException: 10.0.4.147:8000 failed to respond
- LeetCode:35. Search Insert Position(Easy)
- Visual Studio 2015 Test Explorer does not show anything