当前位置: 首页 > news >正文

Spring的事务传播机制

  1. 多个事务方法相互调用时,事务如何在这些方法之间进行传播,Spring中提供了七种不同的传播机制,来保证事务的正常执行:
  • REQUIRED:默认的传播机制,如果存在事务,则支持/加入当前事务,如果当前没有事务,则新建一个事务
  • SUPPORTS:如果存在事务,则支持当前事务,如果当前没有事务,则以非事务的方式执行
  • MANDATORY(强制的):如果存在事务,则支持当前事务,如果当前没有事务,则抛出异常
  • REQUIRED_NEW:如果存在事务,则挂起当前事务,如果当前没有事务,则新建一个事务
  • NOT_SUPPORTED:如果存在事务,则挂起当前事务,否则以非事务的方式运行
  • NEVER:如果存在事务,则抛出异常,否则以非事务的方式运行
  • NESTED:如果存在事务,则开启嵌套事务运行,否则新建一个事务

  1. 支持事务
    将子方法的逻辑添加到主方法的事务中,由主方法的事务进行控制

  1. 事务挂起
    新建事务时,将现有的Connection1保存到ThreadLocal中(它还有尚未提交的事务),然后创建Connection2,Connection2提交、回滚、关闭完毕后,再把Connection1取出来,完成提交、回滚、关闭等动作,保存Connection1的动作称之为事务挂起
    Connection

  2. REQUIRED_NEW和NESTED的区别

  • REQUIRED_NEW是新开一个事务且该事务与原事务无关,而NESTED是当前存在事务时会开启一个嵌套事务
  • REQUIRED_NEW原事务回滚不会影响新开的事务,NESTED父事务回滚,子事务也会回滚
  1. REQUIRED_NEW和NESTED的共同点
    新事务回滚都不会影响原事务

  2. REQUIRED和NESTED的区别
    REQUIRED情况下,主方法存在事务时,子方法和主方法使用的是同一个事务,所以子方法出现异常,无论主方法是否catch,事务都会回滚;NESTED情况下,子方法出现异常,如果主方法catch其异常,那么只有子事务回滚,父事务不会回滚

  3. REQUIRED和NESTED的共同点
    主方法回滚,子方法会都会跟着回滚

http://www.lryc.cn/news/5126.html

相关文章:

  • Python:路径之谜(DFS剪枝)
  • 阿里巴巴在开源压测工具 JMeter 上的实践和优化
  • React Draggable插件实现拖拽功能
  • MySQL-运算符
  • Hudi-基本概念(时间轴、文件布局、索引、表类型、查询类型、数据写、数据读、Compaction)
  • 数据分享|中国各省、各市、各区县分年、分月、逐日平均气温数据(2000年~2019年)
  • steam/csgo搬砖,2023年最暴利的项目
  • RDSDRDSPolarDBPolarDB-X的区别
  • 【Python学习笔记】30.Python3 命名空间和作用域
  • 后量子 KEM 方案:Kyber
  • 2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛)
  • 生产Nginx现大量TIME-WAIT,连接耗尽,该如何处理?
  • Linux服务器clang-13安装(环境变量配置)
  • 【C++】C/C++内存管理模板初阶
  • 笙默考试管理系统-index展示
  • 前端基础知识6
  • 【项目精选】智慧物业管理系统
  • 解决HC-05/HC06等蓝牙模块的调试问题
  • dfs(八)数字的全排列 (含有重复项与非重复项)
  • 基于微信小程序的医院挂号系统小程序
  • 工程经验:残差连接对网络训练的巨大影响
  • 靓号管理-搜索
  • B站发帖软件哪个好用?好用的哔哩哔哩发帖工具
  • docker
  • Django by Example·第三章|Extending Your Blog Application@笔记
  • 23.2.13 Drive development 设备树信息解析相关代码
  • 智能工厂以MES系统为基础,实现"信息化减人,自动化换人"
  • 【数据挖掘实战】——电力窃漏电用户自动识别
  • 树莓派 安装 宝塔linux面板5.9. 2023-2-13
  • 如何提高短视频的播放量-4个技巧