万籁俱寂,万字将成。
刘耀文
Stay hungry. Stay foolish.
© 2024-2026
Powered by Mix Space&
余白 / Yohaku
.
正在被0人看爆
关于
关于本站关于我
更多
时间线友链
联系
写留言发邮件 ↗
刘耀文
Stay hungry. Stay foolish.
链接
关于本站·关于我·时间线·友链·写留言·发邮件
© 2024-2026 Powered by Mix Space&
余白 / Yohaku
.
正在被0人看爆
赣ICP备2024031666号
RSS 订阅·站点地图·
··|
RSS 订阅·站点地图·|··|赣ICP备2024031666号
稍候片刻,月出文自明。

Spring事务的传播行为

(已编辑)
31
AI·GEN

关键洞察

这篇文章上次修改于,可能部分内容已经不适用,如有疑问可询问作者。

Spring事务的传播行为

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • 事务传播

    事务传播的几种情况

    序号 事务的传播机制 说明 备注
    1 required 如果当前存在事务,就加入该事务。 如果当前没有事务,就创建一个新事务。 这是最常用的设置。 只创建一个事务。
    2 requires_new 不管是否存在事务,都创建一个新的、自己的事务。老事务先挂起,再创建新事务,新事务 执行完并提交,接着,继续执行 老事务最后提交。 1、每次都创建一个新的事务。 2、创建 新事务 前,老事务 先挂起。 3、先执行的方法后提交事务,后执行的方法先提交事务。 4、老事务 的回滚,不会影响 新事务 的提交。
    3 nested 如果当前存在事务,则 嵌套事务与外面事务使用同一事务,不同的是 嵌套内部开启一个新的保存点( savepoint ),执行有两种情况: (1)当嵌套内部 发生回滚,不影响外面事务的正常提交。 (2)当外面事务 发生回滚,则嵌套内的事务要回滚。 (3)未发生异常时,则嵌套内的事务和外部事务一起,一个整体提交。如果当前没有事务,则执行与 required 类似的操作。 皮尚在,毛被烧掉。 皮之不存,毛将焉附。
    4 supports 支持当前事务。 如果当前存在事务,就加入该事务, 如果当前不存在事务,就以非事务执行。 supports 不会创建事务。
    5 not_supported 不支持事务。 如果当前存在事务,就把当前事务 挂起。 如果当前没有事务,就以非事务执行。
    6 mandatory 强制、必须使用事务。 如果当前 已经存在事务,就加入该事务, 如果当前不存在事务,就 抛出异常。 1、mandatory 不会创建事务。 2、mandatory 执行的前提是已经存在事务。
    7 never 禁止事务 。 如果当前存在事务,则 抛出异常, 如果当前没有事务,以非事务方式执行, 必须在一个没有事务中执行,否则报错。

    事务传播的几种情况理解

    行为 类型
    有就加入,没有就算了 supports
    外面有没有都要是新事务 requires_new
    外面有就加入,没有就新事务 required
    外面有就加入,保存点加入,没有就新事物 nested
    不要事务,外面有先挂起 not_supported
    要求外面有事务(不满足异常) mandatory
    要求外面没有事务(不满足异常) mandatory

    线程绑定(同步管理)