常用事务@Transactional(propagation=Propagation.REQUIRES_NEW)和@Transactional(propagation=Propagation.REQU

方法A中调用B后再调用C,三个方法中均有插入数据后再查询数据

B方法的注解:@Transactional(propagation=Propagation.REQUIRES_NEW) --不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务

C方法的注解:@Transactional(propagation=Propagation.REQUIRED) --如果有事务,那么加入事务,没有的话新建一个

 

1、当方法B或者C报错时,A、B、C方法都回滚

2、当方法A、B、C异常被捕获时,A、B、C事务不回滚(a、b、c均入库)

3、当方法BC执行后,方法A报错时,A、C事务回滚,B事务不回滚(b数据入库)

 

A方法向表中添加数据a,在查询该表能得到数据a

B方法向表中添加数据b,再查询该表能得到数据b

C方法向表中添加数据c,再查询该表能得到数据a,b,c

 

带有注解@Transactional(propagation=Propagation.REQUIRES_NEW)的方法走完之后,数据就会被提交入库

 

 

 

另外需要注意方法内部调用@Transactional(propagation=Propagation.REQUIRES_NEW)注解不生效,比如A和B都在同一个方法中,A调用B,B方法是此注解,则不生效。同样,AOP拦截也拦截不到B

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值