用自己的话总结@Transactional中的REQUIRED方法和REQUIRES_NEW的区别

用自己的话总结@Transactional中的REQUIRED方法和REQUIRES_NEW的区别

①事务的传播行为:当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。
②REQUIRED(系统默认):如果有事务在运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行
REQUIRES_NEW:当前的方法必须启动新的事务,并在它自己的事务内运行,如果有事务正在运行,应该将它挂起
③区别:
REQUIRED:purchase为两个声明了事务的方法,并且传播行为是系统的默认行为。同时checkout也是一个声明了事务的方法,在该方法中调用purchase的两个方法。当checkout执行到第一个方法的时候,第一个方法继续使用checkout的事务进行执行,第二个方法也是使用checkout的事务进行执行,所以整个方法就只要一个事务。
REQUIRES_NEW:purchase为两个声明了事务的方法,传播行为均是REQUIRES_NEW。checkout方法的事务执行到第一个方法的时候,挂起,然后子方法的事务进行,第二个方法也是一样。
④如果一个事务发生了错误,那么回滚。在REQUIRED属性中,如果第二个方法发生错误,第一个方法也会回滚。而REQUIRES_NEW属性中,第二个方法发生错误,因为第一个是单独的事务,所以不会受到影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值