Spring 事物隔离级别,事物传播行为
Spring 框架中对于事物的管理,主要定义了一下四种属性:
- 事物的隔离(Isolation)级别
- 事物的传播行为(Propagation Behavior)
- 事物的超时时间(TImeout)
- 是否为只读(ReadOnly)
事物的隔离级别又有以下5个常量用于标志可供选择的隔离级别:
- ISOLATION_DEFAULT:如果指定隔离级别为 ISOLATION_DEFAULT,则表示使用数据库默认的隔离级别,通常情况下是 Read Committed。
- ISOLATION_READ_UNCOMMITTED:对应 Read Uncommitted 隔离级别,无法避免脏读,不可重复读和幻读。
- ISOLATION_READ_COMMITTED:对应 Read Committed 隔离级别,可以避免脏读,但无法避免可重复读和幻读。
- ISOLATION_REPEATABLE_READ:对应 Repeatable Read 隔离级别,可以避免脏读和不可重复读,但不能避免幻读。
- ISOLATION_SERIALIZABLE:对应 Serialization 隔离级别,可以避免所有的脏读,不可重复读以及幻读,但并发性效率最低。
事物的传播行为,有以下7种:
- PROPAGETION_REQUIRED:如果当前存在一个事务,则加入当前事务。如果不存在任何事务,则创建一个新的事务。总之,要至少保证在一个事务中运行。Required 通常作为默认的事务传播行为。
- PROPAGETION_SUPPORTS:如果当前存在一个事务,则加入当前事务。如果当前不存在事务,则直接执行。对于一些查询方法来说,那么不需要事务的支持。如果当前方法被其他方法调用,而其他方法启动了一个事务,使用 Supports 可以保证当前方法能够加入当前事务,并洞察当前事务对数据资源所做的更新。
- PROPAGETION_MANDATORY:mandatory 强制要求当前存在一个事务,如果不存在,则抛出异常。如果某个方法需要事务支持,但自身又不管理事务提交或者回滚,那么比较适合使用 mandatory。
- PROPAGETION_REQUIRES_NEW:不管当前是否存在事务,都会创建新的事务。如果当前存在事务,会将当前事务挂起(Suspend)。如果某个业务对象所做的事务不想影响到外层事务, requires_new 应该是合适的选择。比如,假设当前的事务方法需要向数据库中更新写日志信息,但是指这些日志信息更新失败,我们也不想因为该业务方法的事务回滚,而影响到外层事务的成功提交。因为这种情况下,当前业务方法的事务成功与否对外层事务来说无关紧要。
- PROPAGETION_NOT_SUPPORTED:不支持当前事务,而是在没有事务的情况下执行。如果当前存在事务的话,当前事务原则上将被挂起(Suspend)。
- PROPAGETION_NEVER:永远不需要当前存在事务,如果存在事务,则抛出异常。
- PEOPAGETION_NESTED:如果存在当前事务,则在当前事务的一个嵌套事务中执行,否则与 PROPAGETION_REQUIRED 的行为类似,即创建新的事务,在新创建的事务中执行。Nested 粗看起来好像与 PROPAGETION_REQUIRES_NEW 创建的新事务与外层事务属于同一个 “档次”,即二者的地位是相同的。当新创建的事务运行的时候,外层事务将被暂时挂起。而 Nested 创建的嵌套事务则不然,它是寄生于当前外层事务的,它的地位比当前外层事务的地位要小一号。当内部嵌套事务运行的时候,外层事务也是出于 active 状态,如下图涉及的多个事务相互之间的地位。

注意:
1. REQUIRES_NEW 传播行为中,外层事务抛出异常,不会影响内部事务。外部事务的异常会影响外层事务。
2. MyBatis 不支持 NESTED 传播行为,最好不使用。
Spring 事物隔离级别,事物传播行为的更多相关文章
- Spring事务隔离级别和传播特性
相信每个人都被问过无数次Spring声明式事务的隔离级别和传播机制吧!今天我也来说说这两个东西. 加入一个小插曲, 一天电话里有人问我声明式事务隔离级别有哪几种, 我就回答了7种, 他问我Spring ...
- Spring事务隔离级别和传播特性(转)
相信每个人都被问过无数次Spring声明式事务的隔离级别和传播机制吧!今天我也来说说这两个东西. 加入一个小插曲,一天电话里有人问我声明式事务隔离级别有哪几种,我就回答了7种,他问我Spring的版本 ...
- Spring事务隔离级别与传播机制详解,spring+mybatis+atomikos实现分布式事务管理
原创说明:本文为本人原创作品,绝非他处转载,转账请注明出处 1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功.其必须遵循四个原则(ACID). ...
- spring事务隔离级别、传播机制以及简单配置
转自 https://blog.csdn.net/zht741322694/article/details/78676964 一.spring支持的事务声明方式1. 编程式事务 当系统需要明确的, ...
- Spring事务隔离级别和传播性
事务的隔离级别也分为四种: read uncommited(读未提交). read commited(读提交). read repeatable(读重复). serializable(序列化), 这四 ...
- spring事物传播机制 事物隔离级别
Spring事务类型详解: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. PROPAGATION_SUPPORTS--支持当前事务,如 ...
- Spring事物隔离级别及事物传播行为@Transactional实现
阅读本篇文章前,请先阅读如下文章: 四种事物隔离级别详解 先看下@Transactional可以配制那些参数及以其所代表的意义. isolation 枚举org.springframework.tra ...
- SQL事物隔离级别
标准SQL定义了4个隔离级别 Read uncommitted 未提交读 Read committed 已提交读 Repeatable read 可重复读 Serializable 可序列化 基本语法 ...
- 事务隔离级别与传播机制,spring+mybatis+atomikos实现分布式事务管理
1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功.其必须遵循四个原则(ACID). 原子性(Atomicity):即事务是不可分割的最小工作单 ...
- 浅谈Spring的事务隔离级别与传播性
浅谈Spring的事务隔离级别与传播性 这篇文章以一个问题开始,如果你知道答案的话就可以跳过不看啦@(o・ェ・)@ Q:在一个批量任务执行的过程中,调用多个子任务时,如果有一些子任务发生异常,只是回滚 ...
随机推荐
- 【02】Jenkins:第一个项目
写在前面的话 通过上一节我们成功的搭建起来 Jenkins,那么接下来就是体验如何构建我们的第一个项目了.当然在这之前我们得专门针对 Java 环境就行简单的配置. 全局工具配置 其实这次配置的主要还 ...
- Quartz.Net 删除一个Job
Quartz.Net 删除Job 来博客园的第一篇文章先写个简单的,希望能帮助到大家. 步入正题: Quartz.Net有三个重要的概念,分别是 Scheduler .Job .Trigger. S ...
- php-fpm解读-进程管理的三种模式
php-fpm进程管理一共有三种模式:ondemand.static.dynamic,我们可以在同一个fpm的master配置三种模式,看下图1.php-fpm的工作模式和nginx类似,都是一个ma ...
- ElasticSearch 查询索引
GET iis_qr_2019-07/_search #查询iis_qr_2019-07索引下的所有日志 GET iis_qr_2019-07/_search?_source=c-ip,time #只 ...
- Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格
目录 一.概述 二.效果展示 三.实现思路 1.冻结行.冻结列 2.行高自适应 3.蚂蚁线 四.测试代码 1.添加表格数据 2.设置冻结行.列 3.行高.列宽 4.单元格背景色 5.单元格文字 6.其 ...
- 为啥git会这么差!!!!
删除分支 git push origin --delete Chapater6 可以删除远程分支Chapater6 git branch -d Chapater8 可以删除本地分支(在主分支中) ...
- Mysql 主从报错:1141
主从同步,从库报错代码:1141 ,错误信息如下: Master_Port: 3306 Connect_Retry: 60 Master_Log_File: binlog.000086 Read_Ma ...
- AIX—日常运维命令总结
1. 查看AIX服务器的物理构造信息,包括服务器网络配置信息 # prtconf # ifconfig -a # lsattr -E -l mem0 :查看系统内存大小 # netstat -in : ...
- 微信小程序到底把什么定义为风险内容?
目录 起因 经过和结果 附录: 起因 之前做一个群相册的小程序,因为涉及到图片和评论等内容的发布分享.因此,微信后台要求有一定的内容安全检测能力. 但是,我用别家的内容检测用的好好的,在国庆前被微信警 ...
- 【Tomcat】Web应用的目录结构
创建时间:6.14 Web应用的目录结构 .xml文件不用自己写,抄头抄尾就可以 (别人的) (抄头抄尾) *注意:WEB-INF目录是受保护的,外界不能直接访问 如果访问WEB-INF目录下的htm ...