事务的传播机制

liuyiyuan liuyiyuan     2022-12-15     744

关键词:

事务传播机制

spring在TransactionDefinition接口中定义了七个事务传播行为:

  1. propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。
  2. propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。
  3. propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。
  4. propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。
  5. propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
  6. propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。
  7. propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作

 四种隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(Read-Uncommitted)
读已提交(Read-Committed)
可重复读(Repeatable-Read)
串行化(Serializable)

 

mysql默认的事务隔离级别为Repeatable-Read, Innodb引擎支持事务,MyIsam引擎不支持事务。mysql实现可重复读的方式为第一次读取数据后保存一个快照,以后直接读快照,所以也叫快照读。

orcale默认的事务隔离级别为Read-Committed

事务的并发问题

  1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

  2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。

  3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

 

脏读会产生错误数据,是不可允许的,不可重复读与幻读是在多次读取中数据发生了变化,数据是有效的。

不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

spring事务传播机制详解(代码片段)

Spring的事务,也就是数据库的事务操作,符合ACID标准,也具有标准的事务隔离级别。  但是Spring事务有自己的特点,也就是事务传播机制。   所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递... 查看详情

面试突击87:说一下spring事务传播机制?

Spring事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring事务传播机制的诞生是为了规定多个事务在传播过程中的行为的... 查看详情

spring事务传播机制

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

spring事务传播机制

一句话总结:使用Spring等容器管理事务,当存在跨方法、跨类的调用时,Spring等容器通过事务传播机制维护事务的统一或事务的调用链。 当我们使用Spring配置文件或注解配置事务时,我们知道Spring通过动态代理技术自动在方... 查看详情

spring的七种事务传播机制

...口方法(如UserService#addUser())时,它将运行于Spring管理的事务环境中,Service接口方法可能会在内部调用其它的Service接口方法以共同完成一个完整的业务操作,因此就会产生服务接口方法嵌套调用的情况,Spring通过事务传播行为... 查看详情

18个示例详解spring事务传播机制

参考技术A事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播。Spring对事务的传播机制在Propagation枚举中定义了7个分类:事务的传播机制,是spring规定的。因为在开发中,最简单的事务是,业... 查看详情

springboot七大传播机制

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

springboot事务和事务传播机制(代码片段)

文章目录1.事务简单介绍2.Spring中事务的实现2.1Spring手动操作事务2.2Spring声明式事务3.@Transactional注解介绍3.1@Transactional作用范围3.2@Transactional参数说明3.3@Transactional出现异常注意事项3.4@Transactional工作原理4.事务隔离... 查看详情

springboot事务和事务传播机制(代码片段)

文章目录1.事务简单介绍2.Spring中事务的实现2.1Spring手动操作事务2.2Spring声明式事务3.@Transactional注解介绍3.1@Transactional作用范围3.2@Transactional参数说明3.3@Transactional出现异常注意事项3.4@Transactional工作原理4.事务隔离... 查看详情

spring事务和事务传播机制(代码片段)

...面对😍系列专栏:Spring系列文章目录为什么需要事务Spring声明事务Transactional参数说明propagationisolationtimeout事务回滚失效解决方案@Transactional工作原理Spring事务的传播机制为什么需要事务传播机制?传播机制的类型... 查看详情

事务及spring事务传播机制(代码片段)

Spring事务​--洱涷zZ事务的四大特征原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败持久性:如果事务一旦提交或者回滚,那么数据库表的数据将被持久的更新隔离性:多个事务之间相... 查看详情

事务及spring事务传播机制(代码片段)

Spring事务​--洱涷zZ事务的四大特征原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败持久性:如果事务一旦提交或者回滚,那么数据库表的数据将被持久的更新隔离性:多个事务之间相... 查看详情

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

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

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

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

事务的传播机制(代码片段)

...说明:2.代码演示:2.1 REQUIRED2.1.1 验证共用一个事务2.1.2 验证当前没有事务,就新建一个事务2.2 SUPPORTS2.2.1支持使用当前事务2.2.2 如果当前事务不存在,则不使用事务2.3 MANDATORY2.3.1支持使用当前事务2.3.2 如果... 查看详情

spring事务传播特性的浅析——事务方法嵌套调用的迷茫

Spring事务传播机制回顾   Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务。结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷。 其实这是不... 查看详情

面试突击:加入事务和嵌套事务有什么区别?

加入事务和嵌套事务是指在Spring事务传播机制中的加入事务(REQUIRED)和嵌套事务(NESTED)的区别,二者看似很像,实则截然不同,那么它们有什么区别呢?接下来我们一起来看。Spring事务传播机制是指,包含多个事务的方法在... 查看详情

数据库事务的四大特性以及事务的隔离级别-与-spring事务传播机制&隔离级别

   本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。  如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴原子性(Atomicity)  原子性是指事务包含的所... 查看详情