Spring嵌套事务

假设在我们项目中事务控制是放在service层,
一。现在项目中有一个ServiceA中有方法method1和method2,方法method2配置的事务级别为PROPAGATION_REQUIRES_NEW,方法method1不受事务控制
1。当在method1中调用method2时,method2此时也不受事务控制,如:在method2中进行数据插入操作,第一条数据插入成功,第二条数据插入发生异常,此时因为method2不受事务控制,在第一条数据插入成功后,第二条数据插入即使抛出异常,此时第一条数据也不会被回滚.
2.当在method2中调用method1时,则此时method1会受事务控制,如:在method1中进行数据插入操作,插入成功,但此时method2中抛出异常,结果method1成功插入的数据会回滚.

二。现项目中有ServiceA,ServiceB两个Service,在ServiceA中有method1方法,在SerivceB中有method2方法.其中method1不受事务控制,method2受事务控制
1.当在method1中调用ServiceB中的method2方法,在method2方法中执行往数据库中插入两次数据,第一次插入成功,第二次插入发生异常,此时第一次插入成功的数据会发生回滚,由此可见ServiceB中的method2还是受事务控制,而在method1中如果分两次往数据库中插入数据,第一次插入成功,第二次发生异常,此时第一次插入的数据不会回滚,同时也不会影响method2中的插入数据。

2。当在ServiceB中的method2中调用ServiceA中的method1时,method1中执行数据插入成功,而此时method2中操作发生异常,结果会导致method1中数据回滚,由此可知method1共用method2的事务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值