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

【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无事务

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

相关文章:

  • 使用 Python 的高效相机流
  • pycharm使用
  • C++项目实战——基于多设计模式下的同步异步日志系统-②-相关技术补充(不定参函数)
  • iOS开发Swift-10-位置授权, cocoapods,API,天气获取,城市获取-和风天气App首页代码
  • CNN(七):ResNeXt-50算法的思考
  • 【人月神话】深入了解软件工程和项目管理
  • 52、基于函数式方式开发 Spring WebFlux 应用
  • MySQL的用户管理
  • LeetCode //C - 114. Flatten Binary Tree to Linked List
  • 利用transform和border 创造简易图标,以适应uniapp中多字体大小情况下的符号问题
  • C/C++指针函数与函数指针
  • 30天入门Python(基础篇)——第1天:为什么选择Python
  • 智慧公厕破解公共厕所管理的“孤岛现象”
  • excel中删除重复项
  • 2023-9-8 求组合数(三)
  • 01 - Apache Seatunnel 源码调试
  • UVA-12325 宝箱 题解答案代码 算法竞赛入门经典第二版
  • 烟感报警器单片机方案开发,解决方案
  • 【JavaEE】_CSS引入方式与选择器
  • 【8】shader写入类中
  • Servlet注册迭代史
  • 合创汽车V09纵享商务丝滑?预售价32万元起,正式宣布大规模生产
  • 49. 视频热度问题
  • 【力扣练习题】加一
  • Linux--I/O复用之select
  • 数据结构大作业 成绩分析c语言程序设计
  • Consul学习笔记之-初识Consul
  • python实现读取并显示图片的两种方法
  • Spring Boot 整合 MyBatis
  • 2023高教社杯数学建模A题B题C题D题E题思路模型 国赛建模思路分享