事务的传播属性--解读

事务的传播属性:

1: REQUIRED

如果当前已经有事务了,就使用当前事务,如果没有,就新起一个事务。

解释:A方法的事务启动----B1方法事务-------B2方法事务-------A方法事务结束

此时因为A方法已经新起了一个事务,因此在B1方法时就不会另起新的事务,这时只要A方法中出现异常,包括由A方法本身引起的,两个B方法引起的等,都会引起整个A事务回滚,即两个B方法的事务也要回滚。

2.: REQUIRE_NEW

不管外部事务存不存在,都会在内部事务中新起一个事务,挂起其他事务。

解释:A方法的事务启动T1,B1方法新起事务T2,B2方法新起事务T3,如果在A事务执行过程中,B1的事务已经正常完成,B2事务出现异常;首先B2肯定回滚,由于异常向上抛出,那么引起A出现异常,那么A也回滚。此时B1的事务已经完成,不会进行回滚;。如果在A中对B2的异常进行try/catch那么A方法不会出现异常,不需要回滚。

3: SUPPORTS

如果当前在事务中,即以事务的形式运行,如果当前不再一个事务中,那么就以非事务的形式运行

4: MANDATORY

必须在一个事务中运行。也就是说,他只能被一个父事务调用。否则,他就要抛出异常

5: NOT_SUPPORTED

当前不支持事务。

6: NEVER

不能在事务中运行。

7: NESTED

理解Nested的关键是savepoint。他与REQUIRES_NEW的区别是,REQUIRES_NEW另起一个事务,将会与他的父事务相互独立,

而Nested的事务和他的父事务是相依的,他的提交是要等和他的父事务一块提交的。也就是说,如果父事务最后回滚,他也要回滚的。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值