框架:Spring事务的隔离级别
1. 首先,说说什么事务(Transaction)
事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。
如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。
当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。
由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。
2. spring七个事务传播属性:
1.PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
2.PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。
3.PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。
4.PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在事务,把当前事务挂起。
5.PROPAGATION_NOT_SUPPORTED – 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
6.PROPAGATION_NEVER – 以非事务方式执行,如果当前存在事务,则抛出异常。
7.PROPAGATION_NESTED – 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
备注:常用的两个事务传播属性是1和4,即PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW
3. 五个隔离级别:
ISOLATION_DEFAULT
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
另外四个与JDBC的隔离级别相对应;
ISOLATION_READ_UNCOMMITTED
这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
ISOLATION_READ_COMMITTED
保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。
这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
ISOLATION_REPEATABLE_READ
这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
ISOLATION_SERIALIZABLE
这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读。
关键词:
1)幻读:事务1读取记录时事务2增加了记录并提交,事务1再次读取时可以看到事务2新增的记录;
2)不可重复读取:事务1读取记录时,事务2更新了记录并提交,事务1再次读取时可以看到事务2修改后的记录;
3)脏读:事务1更新了记录,但没有提交,事务2读取了更新后的行,然后事务T1回滚,现在T2读取无效。
脏读:指一个事务读取了一个未提交事务的数据
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同.一个事务读取到了另一个事务提交后的数据.
虚读(幻读):在一个事务内读取了别的事务插入的数据,导致前后读取不一致(insert)
框架:Spring事务的隔离级别相关推荐
- Spring事务的隔离级别
事务的特性-ACID 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ...
- 事务隔离级别和传播行为_.spring的事务有几种方式?spring事务的隔离级别和传播行为是什么?...
展开全部 Spring提供了许多内置事务管理器实现,常用的有: DataSourceTransactionManager(JDBC局部事务):62616964757a686964616fe59b9ee ...
- spring事务的隔离级别和传播特性详解(附实例)
spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager.对于编程式事务 ...
- spring事务传播,隔离级别,
数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题. ACID 首先总结一下数据库事务正确执行的四个要素(ACID): 原子性( ...
- Spring→事务、隔离级别、事务传播行为、编程式事务控制、XML配置声明式事务(原始方式)、XML配置声明式事务(基于tx/aop)、@注解配置声明式事务、优势总结
事务 Spring事务管理 不考虑隔离引发问题 隔离级别 事务传播行为 演示环境搭建 编程式事务控制 XML配置声明式事务(原始方式) XML配置声明式事务(基于tx/aop) @注解配置声明式事务 ...
- oracle事物的传播属性,spring事务的隔离级别和传播属性
/*** @author 王政* @date 2006-11-24* @note 转载自http://www.iteye.com/topic/35907?page=1*/ ********Transa ...
- 什么是事务? 事务的隔离级别和事务运行的模式分别是什么?spring 事务和分布式事务实现方式有哪些?
目录 什么是事务? 事务的隔离级别: 事务运行的模式: spring 事务实现方式: 分布式事务实现方式: 什么是事务? 百度百科中解释:指作为单个逻辑工作单元执行的一系列操作,此操作是对数据库的操作 ...
- 带你读懂Spring 事务——事务的隔离级别(超详细,快藏)
不了解事务的铁汁可以先看前两篇,讲的超详细,有问题还请您指点一二 带你读懂Spring 事务--认识事务 带你读懂Spring 事务--事务的传播机制(藏) 特别提示:本文所进行的实验都是在MySQL ...
- java事务不生效场景_事务的隔离级别、事务不生效的场景
一.事务的隔离级别 1.读未提交Read Uncommited:事务还没提交的时候,修改的数据就让别的事务给读到了----脏读 2.读已提交Read Commited:事务A查询一个数据值是1,过了段 ...
最新文章
- CV06-Xception笔记
- 百度高层巨震!陆奇卸任COO,王海峰晋升高级副总裁
- python glob 模块 map函数
- HTML图片热区map area的用法(转)
- jenkins 配置使用
- IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl
- 用python实现复选框树_如何使用Python中的复选框创建树视图
- 虚函数(Virtual Function)与 纯虚函数(Pure Virtual Function)
- Oracle与MySQL性能比较
- Nodejs前端服务器压缩图片
- 运行bat批处理文件不出现黑框
- mybatis 添加语句返回对象_mybatis的insert语句插入数据时的返回值的实现
- 不要在给自己不学习找借口了,否则…
- 基于Flask开发网站--利用复选框进行批量操作
- Markdown案例
- 启动一个java项目http状态 500 - 内部服务器错误_给我 20 分钟,我教你快速掌握JavaWeb和Http...
- e0312 不存在用户定义的_更加灵活的参数校验,Spring-boot自定义参数校验注解
- WINDOWS平台上扩展SGA,把你的内存用起来吧
- android 弱网测试工具,app弱网测试及使用的工具
- 【数理逻辑四】谓词逻辑及形式系统 【中】
热门文章
- 两道关于JS的小考题(闭包与中间件)
- C# 数组与 list 互相转换案例
- Linux 进程、端口、IP、连接数等查询脚本
- 软链接和硬链接的解读
- C#通用类库--设置开机自运行禁用任务管理器注册表等操作
- 【C/C++】 读、写二进制文件经典实例
- 方程AX=b的解的讨论(特解、通解、零空间向量等概念)及其MATLAB实现
- 深度学习目标检测(YoloV5)项目——从0开始到项目落地部署
- java 线程的基本概念_Java多线程——多线程的基本概念和使用
- c语言 串口中断服务函数,GCC-AVR 编写中断服务函数的注意事项