Spring事务传播简介
一、事务传播属性(propagation)
1、REQUIRED,默认属性
此级别下,会为每一个调用的方法创建一个逻辑事务域,如果前面的方法已经创建了事务,那么后面的方法支持当前事务,如果当前没有事务,会重新建立事务
2、MANDATORY(务必的)
支持当前事务,如果没有则抛异常
3、NEVER
非事务执行,如果有事务则抛异常
4、NOT_SUPPORTED
非事务操作,如果有事务则挂起
5、REQUIRES_NEW
新建事务,如果当前存在事务则挂起当前
6、SUPPORTS
支持当前事务,如果没有当前事务,则以非事务方式执行
7、NESTED(镶嵌)
支持当前事务,新增SavePoint点,与当前事务同步提交或回滚。
嵌套事务就是内层事务依赖于外层事务,外层事务失败,回滚内外层事务,内层事务失败,不影响外层事务
二、事务隔离级别(Isolation Level)
事务并发引起的三种情况
1、Dirty Reads 脏读
一个事务对数据进行更新操作还未提交,另一个事务也来操作这个未提交数据,如果第一个事务操作失败,数据回滚了,而第二个事务用了未提交的数据,也就是用了错误数据,就造成了脏读
如果第一个事务向数据库插入一条数据,还有后期操作所以没有提交,第二个事务在第一个事务没提交的情况下读取了第一个事务插入的数据,如果第一个事务后期操作出问题了,那么数据回滚,这导致第二个事务取错了数据,也就是脏读
2、Non-Repeatable Reads 不可重复读
一个事务要多次读取同一数据,该事务还未结束时,另一个事务就对那个数据做了修改,那么第一个事务本该读到的是同样数据,被第二个事务修改后就多到的不同了,造成不可重复读
3、Phantom Reads 幻读
第一个事务在查询符合某条件数据时,此时另一事务插入一条符合条件的新数据,第一个事务就感觉莫名多了一条,仿佛出现幻觉,就叫幻读
4、不可重复读和幻读区别:
不可重复读是在同一事物中多次查询,而过程中其他事物对数据做了修改或删除,返回不同的结果
幻读在同一事物中多次查询,而过程中其他事物做了插入操作,得到不同结果
表面上看区别是不可重复读是其他事务对数据修改或删除造成的问题,幻读是其他事务对数据进行插入造成的问题
五种隔离级别
1、DEFAULT 默认
使用的是数据库默认设置的隔离级别,依赖于数据库事务
2、READ_UNCOMMITTED 读未提交
事务最低隔离级别,允许另外事务可以看到未提交数据,容易造成脏读、不可重复读和幻读
3、READ_COMMITTED 读已提交
保证已修改的数据提交后才能被另外事务读取到,另外事务不能读取未提交数据,避免了脏读,不可避免不可重复读和幻读
4、REPEATABLE_READ 可重复读
防止脏读和不可重复读,可能出现幻读
5、SERIALIZABLE 串行化
花费代价最高,事务被处理为顺序执行,脏读、不可重复读、幻读均可避免
Spring事务传播简介的更多相关文章
- spring事务传播机制实例讲解
http://kingj.iteye.com/blog/1680350 spring事务传播机制实例讲解 博客分类: spring java历险 天温习spring的事务处理机制,总结 ...
- Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务 ...
- Spring事务传播特性的浅析——事务方法嵌套调用的迷茫
Spring事务传播机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务.结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷. 其实这 ...
- Spring事务传播机制和数据库隔离级别
Spring事务传播机制和数据库隔离级别 转载 2010年06月26日 10:52:00 标签: spring / 数据库 / exception / token / transactions / s ...
- spring 事务传播机制
spring 事务 传播机制 描述的 事务方法直接相互调用,父子事物开启,挂起,回滚 等的处理方式. 绿色的 那几个 我认为比较重要. 1 , @Transactional(propagation=P ...
- 事务、事务特性、事务隔离级别、spring事务传播特性
事务.事务特性.事务隔离级别.spring事务传播特性 1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功, ...
- 什么是事务、事务特性、事务隔离级别、spring事务传播特性
1.什么是事务: 事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败). 2.事务特性: 事务特性分为四个:原子性(At ...
- spring事务传播实现源码分析
转载. https://blog.csdn.net/qpfjalzm123/article/details/83717367 本文只是对spring事务传播实现的流程进行简单的分析,如有不对之处请指出 ...
- Spring事务传播属性介绍(二).mandatory、not_supported、never、supports
Required.Required_New传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10259897.html Nested传播属性分析传送 ...
随机推荐
- 微信公众平台消息接口开发之微信浏览器HTTP_USER_AGENT判断
在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断. 一.$_SERVER数组 $_SERVER 是一个包含了诸如头信息(header).路径( ...
- 1109关于redo_Log和undo_log和BIN-LOG
转自http://www.cnblogs.com/Bozh/archive/2013/03/18/2966494.html 三者之间的区别BIN-LOG 一个对应BINLOG文件REDO-LOG 对应 ...
- 开发错误日记 12: Unsupported major.minor version 52.0
开发错误日记 12: Unsupported major.minor version 52.0 在编译时出现如下错误: java.lang.UnsupportedClassVersionError: ...
- Ubuntu14.04下安装tomcat
1.官方网站下载最新的tomcat:http://tomcat.apache.org/download-80.cgi在ubuntu上,我们下载zip和tar.gz.Ubuntu14.04安装和配置To ...
- 【BZOJ 1038】【ZJOI 2008】瞭望塔
http://www.lydsy.com/JudgeOnline/problem.php?id=1038 半平面交裸题,求完半平面后在折线段上的每个点竖直向上和半平面上的每个点竖直向下求距离,统计最小 ...
- mysql之旅【第一篇】
1,基本操作 create databades 数据库名: #创建数据库 show databases; #显示存在的数据库 drop database 数据库名字 #删除数据库 2,数据库存储引擎介 ...
- MySQL的Sleep进程
php的垃圾回收机制,其实只针对于php本身. 对于mysql,php没权利去自动去释放它的东西. 如果你在页面执行完毕前不调用mysql_close(),那么mysql那边是不会关闭这个连接的. 如 ...
- NPOI简介
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. (一)传统操作Excel遇到的问题: 1.如果是.NET,需要在服务器端 ...
- C++IO关于cin>>和getline的理解
这个问题困扰了我有一段时间了,趁着十一放假有时间,仔细研究了一下 首先来看一下输入输出运算符cin>>的构成:cin和>> cin>>是由两部分构成的,cin和&g ...
- hdu5183 hash大法
维护前缀和sum[i]=a[0]-a[1]+a[2]-a[3]+…+(-1)^i*a[i]枚举结尾i,然后在hash表中查询是否存在sum[i]-K的值.如果当前i为奇数,则将sum[i]插入到has ...