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

spring框架的事务传播级别经典篇

一 spring事务传播级别

1.1 总结概述

方法A:外围方法,方法B:内部方法,在A中调用B
1.事务级别PROPAGATION_REQUIRED:
如果A为PROPAGATION_REQUIRED:B 不管有没有设置事务级别,都会加入到A的事务级别中。如果执行B的时候出异常,那么不仅B方法里执行的会被回滚,A也会全回滚。所有Propagation.REQUIRED修饰的内部方法和外围方法均属于同一事务,只要一个方法回滚,整个事务均回滚
如果A没有设置事务级别,Propagation.REQUIRED修饰的内部方法B会新开启自己的事务,且开启的事务相互独立,互不干扰。
2.事务级别PROPAGATION_support:
如果A为PROPAGATION_REQUIRED:B 不管有没有设置事务级别,都会加入到A的事务级别中。如果执行B的时候出异常,那么不仅B方法里执行的会被回滚,A也会全回滚。所有Propagation.REQUIRED修饰的内部方法和外围方法均属于同一事务,只要一个方法回滚,整个事务均回滚
如果A没有设置事务级别,Propagation.support修饰的内部方法B,就不开启新的事务,会以非事务方式运行。
3.事务级别PROPAGATION_MANDATORY(强制传播):
如果A为PROPAGATION_REQUIRED:B 不管有没有设置事务级别,都会加入到A的事务级别中。如果执行B的时候出异常,那么不仅B方法里执行的会被回滚,A也会全回滚。所有Propagation.REQUIRED修饰的内部方法和外围方法均属于同一事务,只要一个方法回滚,整个事务均回滚
如果A没有设置事务级别,Propagation.MANDATORY修饰的内部方法B,就抛出异常,即必须在事务的环境下运行。
4.事务级别PROPAGATION_REQUIRED_NEW:
如果A为PROPAGATION_REQUIRED:B不管有没有设置事务级别PROPAGATION_REQUIRED_NEW,都会新开启自己的事务,和方法A的事务,相互独立,互不干扰。各自玩各自的。
5.事务级别PROPAGATION_NOT_SUPPORTED:
如果A为PROPAGATION_REQUIRED:B 设置事务级别PROPAGATION_NOT_SUPPORTED,B会以非事务的方式执行,B执行完后,再以事务的方式执行剩余逻辑,
此时不管B是成功还是失败,对A都不造成影响。此时如果A出现异常,对B也不会造成影响,只会回滚A里的其他的执行。如果是单独执行B方法,直接会以非事务的方式执行。
6.事务级别PROPAGATION_never
如果A为PROPAGATION_REQUIRED:B 有设置事务级别PROPAGATION_never,A调用B 则报异常
如果A没有设置事务级别,B 有设置事务级别PROPAGATION_never,则B以非事务方式运行。
7.事务级别PROPAGATION_nested
如果A为PROPAGATION_REQUIRED:B 有设置事务级别PROPAGATION_nested,外围主事务A回滚,子事务B一定回滚,而内部子事务B可以单独回滚而不影响外围主事务A和其他子事务(需要 catch进去,后边有例子)
如果A没有设置事务级别,B 有设置事务级别PROPAGATION_nested,则Propagation.NESTED和Propagation.REQUIRED作用相同,修饰的内部方法B都会新开启自己的事务,且开启的事务相互独立,互不干扰。

https://www.cnblogs.com/sjj123/p/16677875.html

【spring】spring 的事务(transaction) 四 嵌套事务PROPAGATION_NESTED_云川之下的博客-CSDN博客

【Spring】彻底搞明白事物的传播级别_事务传播级别-CSDN博客

1.2 PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW的区别

PROPAGATION_REQUIRES_NEW内层事务执行完就立即提交。

PROPAGATION_NESTED 子事务执行完,不会立即提交,而是等待外层事务完成后一起提交。


http://www.kler.cn/a/152297.html

相关文章:

  • Mysql锁
  • Panalog 日志审计系统 前台RCE漏洞复现
  • MySQL三大日志详细总结(redo log undo log binlog)
  • Linux信号超详细剖析
  • Linux命令--根据端口号查看进程号(PID)
  • AKConv:具有任意采样形状和任意数目参数的卷积核
  • 编译企业微信会话内容存档PHP版SDK扩展
  • 【超全】C++速查手册:面向对象与继承多态
  • HarmonyOS4.0 ArkUI组件
  • 【软件测试】白盒测试和黑盒测试
  • 从零开始部署一个网站详细图文教程——腾讯云的服务器、SSL证书,阿里云的域名,七牛云的对象存储、CDN等
  • 【JavaSE】集合(学习笔记)
  • Redis的高可用模式
  • 11.30固定成本,完全竞争市场,无差异曲线,帕累托最优
  • 上门服务系统|东郊到家软件提供高效服务的科技支柱
  • Java基本数据类型
  • 测试相关-面试高频
  • 【Web】UUCTF 2022 新生赛 个人复现
  • 最新Midjourney绘画提示词Prompt
  • 面试题库之JAVA基础篇(三)