spring的事务管理:
1. AbstractPlatformTransationManager定义了事务操作的基本流程:
获得事务(判断当前是否有事务,事务传播是否合法)
开始事务
提交事务
回滚事务
事务结束后清理资源,释放连接
2. Spring抽象出了Transaction代表事务,执行事务的提交,回滚等操作,定义了TransactionStatus代表事务的状态,设置事务的属性,为程序员设置事务回滚提供了接口。利用静态类和threadLocal对象存储线程独立的Transaction,Datasource信息(同一事务中对同一数据源是一个连接)
3. 对单数据源事务,spring不仅抽象出事务,还插手了连接的获得与释放,如DataSourceTransactionManager,HibernateTransactionManager,IBATIS,JPA等
4. 对分布式事务(JTA,用XA协议实现),spring的主要工作是抽象出统一的调用接口JTATransactionManager,连接管理还是由分布式事务管理器自己实现。如Jboss,Jotm,atomiks等。
5. 可以采用编程式事务,利用spring提供的TransactionTemplate或TransactionManager。
也可以利用AOP,配置实现事务管理。
6. 对事务的传播级别,一般为required。
开始事务时:此时如果有事务,则不新生成事务,而且返回一个TransactionStatus,但isNewTransaction为false,Transaction是同一个。
提交事务时:如果transactionStatus的isNewTransaction为false,则不提交。
回滚事务时:如果transactionStatus的isNewTransaction为false,则设置rollbackOny为true。
7. 如果事务的传播级别为,nested,则对单数据源事务通过调用jdbc3.0的savepoint api实现嵌套事务,分布式事务不是。
8. 如果事务的传播级别为required_new,则会新起一个事务,对DataSoureTransactionManager,则新起一个连接,同时将原事务挂起,将原事务资源放到新起的事务的suspendResource属性中,如果新事务提交或者回滚,则在结束时调用resume方法将原事务还原。
相关推荐
Spring事务管理Demo
spring事务管理 配置文件等详解
Spring事务管理.pdf 1.资料 2.本地事务与分布式事务 3.编程式模型 4.宣告式模型
Synchronized锁在Spring事务管理下,导致线程不安全。
spring 事务管理的理解
Spring事务管理(全),需要的可下载!
此包含有所有Spring事务管理开发所需要的Jar包,包含框架、核心、表达式、日志、编译、事务切面aop、数据库连接、单元测试、框架文本等jar包。
spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、AOP切面通知方式、AspectJ注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...
在该JAR包的org.springframework.transaction包中,有3个接口文件PlatformTransactionManager、TransactionDefinition和TransactionStatus,如下图所示: Spring事务管理的三个核心接口 5.1.1 事务管理的核心接口 1....
Spring事务管理4种方式 入门级 最简单demo PlatformTransactionManager TransactionTemplate
Spring事务管理中所需要的jar包是 spring-tx-3.2.0.RELEASE.jar
Spring 事务管理,Spring 事务管理,Spring 事务管理,Spring 事务管理
Spring事务管理教程,详细讲解了Spring中的事务管理,包括声明式事务,注解式事务,以及事务配置等等
详细介绍Spring事务管理
Spring事务管理A方法内部调用B方法的回滚问题测试代码