@Transactional的正确使用之事务传播行为的解疑

传送门:https://blog.csdn.net/nbl_yc/article/details/104019732 事务方法之间的调用,回滚问题

前提:事务的传播行为用在事务与事务之间,传播行为描述的是当前方法在遇到其他事务方法会怎么做

举例:

前提:abc都具有事务,ac的传播模式为默认的required

          @Transactional

         public void mainTransaction(){

                a();

                b();

                c();

        }

情况一:

          如果a,b,c的传播方式是required(自己方法的传播模式),那么abc都加入到了mainTransaction()事务中,相当于绑定状态,一个出错,全部回滚

情况二:

         如果ac的传播模式是required,b的传播模式是requiredNew,那么b异常,ab都会回滚;c要是异常,a会回滚,b因为开启了自己的事务,已经执行到数据库了,不会再回滚

总结:required是大家绑定到一块,之间互相影响。requiredNew是自己会影响到别人,但是别人出错,不会影响到自己

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值