详解spring事务及其7种传播行为


1.什么是事务

事务是指一组数据库操作,这些操作被认为是一个不可分割的单元,要么全部成功执行,要么全部失败回滚。
在这里插入图片描述

2.什么是事务传播行为

事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。
例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。

让我们通过一个具体的例子来解释。假设我们有一个电子商务网站,用户下单后,需要同时更新订单表和库存表。我们可以将更新订单表的逻辑放在methodA中,并将更新库存表的逻辑放在methodB中。
如果methodB的事务传播行为设置为"REQUIRED"(默认行为),那么当methodB被methodA调用时,它会加入到methodA的事务中,并与methodA一起在同一个事务中运行。这意味着如果在methodB中发生了任何错误,整个事务都会被回滚,包括methodA对订单表的更新。
另一方面,如果methodB的事务传播行为设置为"REQUIRES_NEW",那么当methodB被methodA调用时,它会为自己开启一个新的独立事务,并在该事务中运行。这意味着即使methodB中发生了错误并进行了回滚,methodA对订单表的更新仍然会保持不变。
因此,methodB的事务传播行为决定了它是在调用者methodA的事务中继续运行,还是为自己开启一个新的事务运行。这样可以根据具体业务需求来选择合适的事务传播行为,以确保数据的一致性和可靠性。

3.spring事务实现方式

在这里插入图片描述

4.spring的7种事务传播行为

在这里插入图片描述

5.PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW的区别

使用PROPAGATION_REQUIRES_NEW时,内层事务与外层事务是两个独立的事务。一旦内层事务进行了提交后,外层事务不能对其进行回滚。两个事务互不影响。使用PROPAGATION_NESTED时,外层事务的回滚可以引起内层事务的回滚。而内层事务的异常并不会导致外层事务的回滚,它是一个真正的嵌套事务。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值