Spring 事务传播属性以及PROPAGATION_NESTED 和PROPAGATION_REQUIRES_NEW
来源:互联网 发布:淘宝能买到正规发票吗 编辑:程序博客网 时间:2024/05/16 11:40
spring的六种事务传播属性
PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
前六个策略类似于EJB CMT,第七个(PROPAGATION_NESTED)是Spring所提供的一个特殊
PROPAGATION_NESTED 和PROPAGATION_REQUIRES_NEW 区别
1. 开启事务的多少,PROPAGATION_REQUIRES_NEW会开启一个新事务,外部事务挂起,里面的事务独立执行。PROPAGATION_NESTED为父子事务,实际上是借助jdbc的savepoint实现的,属于同一个事物。
2. PROPAGATION_NESTED的回滚可以总结为,子事务回滚到savepoint,父事务可选择性回滚或者不不滚;父事务回滚子事务一定回滚。PROPAGATION_REQUIRES_NEW则是不同事物,嵌套事务之间没有必然联系是否回滚都由自己决定。
我的测试样例及结果
调用过程:
methodA(){
methodB();
}
一、 methodA PROPAGATION_REQUIRED
methodB PROPAGATION_REQUIRES
1. 若A回滚,B可以成功执行
2. 若B回滚,A catch异常可自行决定是否回滚,可作为分支处理(不推荐)
二、methodA PROPAGATION_REQUIRED
methodB PROPAGATION_NESTED
1. 若A回滚,一定回滚
2. 若B回滚,A catch异常可自行决定是否回滚,可作为分支处理(不推荐)
参考文档 http://blog.csdn.net/jjavaboy/article/details/45243565
- Spring 事务传播属性以及PROPAGATION_NESTED 和PROPAGATION_REQUIRES_NEW
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别(转载)
- PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED区别
- Spring事务传播问题 — PROPAGATION_REQUIRES_NEW
- spring事务和传播属性
- PROPAGATION_REQUIRED、PROPAGATION_NESTED、PROPAGATION_REQUIRES_NEW
- Spring 事务传播属性
- spring事务传播属性
- spring 事务传播属性
- spring 事务传播属性
- Spring 事务传播属性
- spring事务传播属性
- spring 事务隔离级别和传播属性
- spring事务传播属性和隔离级别
- java中一个实例化的过程
- 关于Webview执行goBack不能返回的问题解决
- 线性代数入门知识4(特征向量)
- 删数问题
- 哈希表如何解决冲突问题
- Spring 事务传播属性以及PROPAGATION_NESTED 和PROPAGATION_REQUIRES_NEW
- require.js的用法详解
- 信号长线传输硬件抗干扰技术
- c++作业4
- Eclipse 中文字体太小解决办法
- 比特的365天
- GIT篇之如何删除github上的仓库?
- js继承的三种方式
- JAVA中常用的数据结构