Spring事务的传播属性/机制/行为(7种)

预计阅读时间: 10分钟

事务的传播

什么是事务的传播?传播,意味着是有两个事务参与的,单个事务是没有 ”传播“ 的概念的

事务的传播机制(propagation behavior),即为在一个事务方法中调用另一个事务方法时,事务该如何执行。

7种传播属性

首先简要介绍事务的7种传播属性,事务方法 methodA 调用事务方法 methodB

传播属性含义
PROPAGATION_REQUIREDrequired 含义是 必须有事务, 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。没有创建 【默认】
PROPAGATION_SUPPORTSsupports 是支持事务,但是单独调用该方法时是没有事务的,如果调用者已经开启了事务,就用调用者的事务。有就用,没有拉到
PROPAGATION_MANDATORYmandatory 意为 强制的 ,必须有事务,但是自己又不创建,如果调用者已经开启了事务,就用调用者的事务。调用者没开启事务,就抛异常。不创建,没有告警
PROPAGATION_REQUIRES_NEWnew 创建新的事务,不管调用者有没有事务,都会新创建一个事务。原来如果已经有的话就把已经有的挂起。两个事务是独立的,事务A中在提交事务B后如果 rollback 并不会导致事务B 的 rollback需要使用 JtaTransactionManager作为事务管理器挂起别人的,创建自己的
PROPAGATION_NOT_SUPPORTEDnot_supported 即为 不支持事务 , 调用者如果已有事务就把它挂起,自己以无事务运行。需要使用 JtaTransactionManager作为事务管理器挂起别人的,我不用
PROPAGATION_NEVERnever 从来都不需要事务的,如果调用者已有事务,就报错!别人有就报错
PROPAGATION_NESTEDnested 嵌套的事务,自己会创建一个新事务,但是这个新事务并不是自己单独提交的,而是等待外层事务一起提交,所以事务B后面 事务 A中的其他代码如果造成了 rollback 则也会导致事务B rollback嵌套

图解传输属性

在这里插入图片描述

图 1 Required & Supports

在这里插入图片描述

图 2 Mandatory & Requires_new

在这里插入图片描述

图 3 Not_supported & Never

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值