【Spring事务】Spring事务的传播机制(通俗易懂)

目录

什么是spring事务

Spring事务的传播机制


什么是spring事务

        封装在数据库事务之上的一种事务处理机制。其管理方法有两种,分别是编程式事务以及声明式事务。一般我们使用@Transactional进行声明式事务。

Spring事务的传播机制

Spring的事务传播机制种类
传播行为描述
PROPAGATION_REQUIRED
默认的Spring事物传播级别,若当前存在事务,则加入该事务,若不存在事务,则新建一个事务
PROPAGATION_REQUIRE_NEW若当前没有事务,则新建一个事务。若当前存在事务,则新建 一个事务,新老事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交
PROPAGATION_NESTED
如果当前存在事务,则嵌套在当前事务中执行。如果当前没有事务, 则新建一个事务,类似于REQUIRE_NEW
PROPAGATION_SUPPORTS支持当前事务,若当前不存在事务,以非事务的方式执行
PROPAGATION_NOT_SUPPORTED以非事务的方式执行,若当前存在事务,则把当前事务挂起
PROPAGATION_MANDATORY强制事务执行,若当前不存在事务,则抛出异常
PROPAGATION_NEVER以非事务的方式执行,如果当前存在事务,则抛出异常

        传播级别一般不需要定义,默认就是PROPAGATION_REQUIRED,除非在嵌套事务的情况。上述描述表格的描述还是比较抽象,下面我们使用一个例子来说明这个传播机制。假定方法A调用方法B:

方法B定义的事务类型方法B定义的事务类型A方法无事务
 @Transactional(propagation = Propagation.REQUIRED)    B和A事务合并成一个事务B新建一个事务
 @Transactional(propagation = Propagation.REQUIRES_NEW)  B新建一个事务,和A事务无关,互不影响B新建一个事务
 @Transactional(propagation = Propagation.NESTED)  B新建一个A的子事务,A异常影响B,B异常不影响AB新建一个事务
 @Transactional(propagation = Propagation.SUPPORTS)  B加入到A事务中B无事务
 @Transactional(propagation = Propagation.NOT_SUPPORTED)  挂起A事务,B以无事务方式执行B无事务
 @Transactional(propagation = Propagation.MANDATORY)  B加入到A事务中B抛异常
 @Transactional(propagation = Propagation.NEVER)  B抛异常B无事务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值