Spirng事务的传播学习

事务传播:一个事务方法在被调用时,如何与现有事务的交互行为。当方法被事务性地调用时,他应该加入当前事务还是开启一个新事物。

常见的事务传播机制(7种):

Propagation枚举类,定义了传播机制和值:

PROPAGATION_REQUIRED:这是默认的传播方式。如果当前有事务,调用方法会加入当前事务;如果没有事务,会新建一个事务。适合大多数数据库操作,在一个事务的场景

**PROPAGATION_REQUIRES_NEW:**无论当前是否存在事务中,都会开启一个新事务。原来的事务会被挂起,直到新的事务执行完成。适合日志记录,外部API调用等不依赖主事务的操作

PROPAGATION_SUPPORTS:如果当前有事务,则加入该事务;如果没有事务,则以非事务的方式执行。适合可选事务的场景,例如只读的服务方法,是否在事务中执行无关紧要

PROPAGATION_NOT_SUPPORT:表示当前方法不需要事务,且如果存在事务,则将事务挂起。适合长时间操作或不需要事务管理的操作。

PROPAGATION_MANDATORY:要求必须在现有事务中执行,如果当前没有事务,则抛出异常。

适合必须在事务上下文中运行的方法

PROPAGATION_NEVER:禁止在事务内执行,如果存在事务就抛出异常。适合明确不希望某些操作在事务中时使用

PROPAGATION_NESTED:开启嵌套事务,如果外层事务回滚,嵌套事务也会回滚;但如果嵌套事务回滚,外层事务可以继续。适合部分操作需要独立回滚的复杂业务逻辑场景。

相关推荐
心随雨下3 分钟前
Tomcat日志配置与优化指南
java·服务器·tomcat
不剪发的Tony老师7 分钟前
SQLite 3.51.0发布,新功能解读
数据库·sqlite
Kapaseker10 分钟前
Java 25 中值得关注的新特性
java
wljt13 分钟前
Linux 常用命令速查手册(Java开发版)
java·linux·python
撩得Android一次心动16 分钟前
Android 四大组件——BroadcastReceiver(广播)
android·java·android 四大组件
努力学习的小廉16 分钟前
初识MYSQL —— 复合查询
android·数据库·mysql
canonical_entropy20 分钟前
Nop平台到底有什么独特之处,它能用在什么场景?
java·后端·领域驱动设计
chilavert31822 分钟前
技术演进中的开发沉思-174 java-EJB:分布式通信
java·分布式
学习_学习_再学习28 分钟前
ffmpeg学习记录
学习·ffmpeg
不是株1 小时前
JavaWeb(后端进阶)
java·开发语言·后端