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

Spring7个事务传播行为和5个隔离级别

传播行为

事务传播行为是为了解决业务层方法之间互相调用的事务问题。

事务方法A被事务方法B调用,就要指定事务如何传播,是两者共用同一事务还是另起一个新事务。

图解spring中七种事务传播行为 终于有人讲明白了_spring七种事务传播行为-CSDN博客

1. REQUIRED

@Transactional注解默认使用就是这个事务传播行为。

如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。

2. REQUIRES_NEW

先创建一个新事务,如果当前存在事务则把当前事务挂起。也就是说不管外部方法是否开启事务,Propagation.REQUIRES_NEW修饰的内部方法都会新开启自己的事务,且开启的事务相互独立,互不干扰。

3. SUPPORTS 

如果当前存在事务,则加入该事务;如果当前没有事务,以非事务的方式运行。

4. NOT_SUPPORTED  

如果当前存在事务,则把当前事务挂起。如果当前没有事务,以非事务方式运行。

5. MANDATORY(强制性)

如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(mandatory:强制性)

6. NEVER

如果当前存在事务,则抛出异常。如果当前没有事务,以非事务方式运行,

7.NESTE(嵌套)

如果当前存在事务,则创建一个新事务作为当前事务的嵌套事务来运行;如果当前没有事务,则创建新事务。

隔离级别

spring的事务隔离级别和mysql几乎一模一样。

DEFAULT

使用后端数据库默认隔离级别,Mysql默认是可重复读

READ_UNCOMMITED

最低的隔离级别,允许读取尚未提交的数据变更,有脏读、幻读、不可重复读的问题。

READ_COMMITED

允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生

REPEATABLE_READ

对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。

SERIALIZABLE

最高的隔离级别,完全服从 ACID 的隔离级别。所有的事务依次逐个执行,这样事务之间就不产生干扰,阻止幻读。

http://www.dtcms.com/a/288353.html

相关文章:

  • Java-Lambda表达式
  • 【Linux】Linux中重定向 及 dup2 详细讲解
  • Stream API
  • 2023 年 5 月青少年软编等考 C 语言八级真题解析
  • 本地安装部署Unstructured-api
  • ADC选型设计
  • SpringBoot项目打包加部署方案
  • Datawhale 7月学习
  • SCSAI工业智能体的核心特征
  • Xss-labs 1-8以及利用python自动sq8注入
  • linux cpu频率和AVS调压等级
  • 板子 5.29--7.19
  • 函数式编程和命令式编程
  • Python爬虫实战:研究psd-tools库相关技术
  • UI 程序退出卡顿问题分析:从真实案例深入理解退出清理路径负载问题
  • 【工具变量】地级市城市包容性绿色增长数据(2011-2023年)
  • vue3使用KeepAlive组件及一些注意事项
  • [spring6: Advice Advisor Advised]-快速理解
  • 基于深度学习的火灾智能检测系统设计与实现
  • 零基础学习性能测试第二章-linux服务器监控:网络iftop
  • HTTP与HTTPS技术细节及TLS密钥交换与证书校验全流程
  • 马走日题解
  • LeetCode Hot100【7. 整数反转】
  • MyBatis动态SQL全解析:五大核心标签实战指南
  • [每日随题11] 贪心 - 数学 - 区间DP
  • 路由器内部电子元器件详解
  • C++数据结构————二叉树
  • 模电基础-电压和电阻
  • RISC采用的3种流水技术的功能和区别分析
  • 【官方】OneCode 3.0 核心技术白皮书:注解驱动、可视编码与 AI 融合