springboot数据库事务7种传播行为

author author     2023-03-14     518

关键词:

参考技术A

如果当前方法的执行上下文中已经打开了事务,那么就使用当前这个事务。

如果当前没有事务,就创建一个新的。

如果多个方法都声明了 REQUIRED ,并且他们嵌套调用,那么他们会共享同一个物理事务。就是 inner 产生了回滚,那么 outer 会跟着回滚。

Outer bean

Inner bean

inner 声明了 REQUIRED ,并抛出了异常,outer 事务将同样回滚,因为他们是同一个事务。

声明 REQUIRES_NEW 的话就会创建一个新的物理事务,内层事务的提交回滚都是独立于外层事务的。外层事务不受内层事务结果的影响,他们运行于独立的物理事务。

Outer bean

Inner bean

inner 的回滚不影响 outer 的事务。当 inner 事务开启后,outer 事务会暂停,当 inner 事务结束后,outer 事务恢复。

NESTED 使嵌套的事务使用相同的物理事务,但是对嵌套调用设置了保存点,所以 inner 事务可以独立于 outer 事务回滚。

支持事务,如果当前存在事务,就沿用当前事务,如果不存在,则继续采用无事务的方式运行。

必须使用事务。如果当前没有事务,则会抛出异常,如果存在当前事务,就沿用当前事务。

不支持事务,当前存在事务时,将挂起事务,运行方法。

不支持事务,如果当前方法存在事务,则抛出异常,否则继续使用无事务机制运行。

参考:
https://www.byteslounge.com/tutorials/spring-transaction-propagation-tutorial

数据库事务4种隔离级别和7种传播行为

...性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为ReadCommitted。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题,在可能出现这类... 查看详情

spring的4种事务特性,5种隔离级别,7种传播行为

spring事务: 事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.事务特性(4种): 原子性(atomicity):强调事务的不可分割. 一致性(consistency):事务的执行的前后数据的完整性... 查看详情

看完就明白_spring事务的7种传播行为(代码片段)

什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagationbehavior)指的就是当一个事务方法被另一个... 查看详情

看完就明白_spring事务的7种传播行为(代码片段)

什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagationbehavior)指的就是当一个事务方法被另一个... 查看详情

springboot事务隔离等级和传播行为的那些事儿

Spring定义了七种传播行为:一、开启事物管理//importorg.springframework.transaction.annotation.EnableTransactionManagement;`@SpringBootApplication@EnableTransactionManagement//显示开启事物管理,springboot默认已经开启事物管理,可不用显示的注解public 查看详情

spring事务传播行为

什么是Spring事务传播行为?事务传播行为用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的时,事务如何传播。假设ServiceA中方法A()调用ServiceB中方法B()(B被事务修饰),那么会有两种情况:方法A有事务,方法B... 查看详情

spring事务传播行为详解

...架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法... 查看详情

spring事务传播行为详解(代码片段)

...ing框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇 查看详情

7种spring事务的传播行为

事务传播行为指的就是当一个业务方法【被】另一个业务方法调用时,应该如何进行事务控制。1、REQUIRED(Spring默认)2、SUPPORTS归类记忆:1、抛异常:MANDATORY:需要事务,使用当前事务,当前没有... 查看详情

transactiondefinition事务传播行为

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:事务传播行为类型事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务,就新建一... 查看详情

数据事务四种隔离机制和七种传播行为

一、隔离级别:数据库事务的隔离级别有4个,由低到高依次为Readuncommitted、Readcommitted、Repeatableread、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。1. ISOLATION_READ_UNCOMMITTED:这是事务最低的隔离... 查看详情

数据事务四种隔离机制和七种传播行为

一、隔离级别:数据库事务的隔离级别有4个,由低到高依次为Readuncommitted、Readcommitted、Repeatableread、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。1. ISOLATION_READ_UNCOMMITTED:这是事务最低的隔离... 查看详情

spring事务传播行为requires_new和nested用法栗子

...ff09;,是为了业务层之间调用事务关系而提出的,数据库层面并存在事务传播行为REQUIRED:默认传播行为,当前有事务,就加入;没有事务就新建一个SUPPORTS 查看详情

springboot事务

1、Spring事务概述本地事务(区别于分布式事务)也叫数据库事务,MySQL的InnoDB存储引擎就已经支持了事务,Spring中的事务是在底层数据库事务的基础上进一步封装,可以在不同的项目、不同的操作中对事务的传播行为和隔离级别... 查看详情

事物的七种传播行为

事务传播行为类型事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。PROPAGATION_SUPPORTS支持当前事务,如果当前没有事务,就以非事务... 查看详情

数据库事务的四种隔离机制和七种传播行为

MySQL数据库为我们提供的四种隔离级别:(依次解决脏读、不可重复读、幻读)  ①Serializable(串行化):可避免脏读、不可重复读、幻读的发生。  ②Repeatableread(可重复读):可避免脏读、不可重复读的发生。(Mysql默认的方式... 查看详情

spring中五个事务的隔离级别和七种传播行为

...五个不同的事务隔离级别DEFAULT:默认的隔离级别,使用数据库默认的事务隔离级别READ_COMMITTED:保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免... 查看详情

springboot事务-了解事务传播(代码片段)

...务已创建或未创建事务的行为。我们将利用上一章开发的SpringBootTransaction项目。它具有组织服务,可以呼叫员工服务和健康保险服务。同样在前面的示例中,我们仅将事务注释添加到了组织服务中。但是,假设用户希... 查看详情