Spring 系统学习:Spring的事务管理---事务回顾
1、事务:逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。
2、事务的特性:
原子性:事务不可分割;
一致性:事务执行前后,数据的完整性保持一致;
隔离性:一个事务的执行不应该受到其他事务的干扰;
持久性:一旦事务结束,数据就持久化到数据库。
3、如果不考虑隔离性,就会引发的安全性问题,例如:
读问题:
(1)、脏读 :一个事务读到了另一个事务正在修改但尚未提交到数据库的数据;
脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。
(2)、不可重复读 :是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。
(3)、虚读、幻读:一个事务读到另一个事务insert到数据库的数据,导致该事务多次查询结果不一致。例如:Transaction1读取满足某种搜索条件的一些行,然后Transaction2插入了符合Transaction1的搜索条件的一个新行。如果Transaction1重新执行产生原来那些行的查询,就会得到不同的行。
(4)、丢失更新:两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。
4、为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。
Read uncommitted:未提交读,任何读问题都解决不了。
Read committed: 已提交读,解决脏读,不可重复读和虚读可能发生。(oracle)
Repeatable read: 重复读,解决脏读和不可重复读,但是虚读有可能发生。(mysql)
Serializable : 解决所有读问题。非常安全,但是效率非常低。提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。
因此,隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。
转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9202385.html
Spring 系统学习:Spring的事务管理---事务回顾相关推荐
- JAVA Spring 事务管理事务不回滚问题
Spring事务管理事务不回滚 dao层: @Repository public class UserDaoImpl implements UserDao { @Autowired private J ...
- 列举MySQL事务的隔离级别_mysql dba系统学习(22)数据库事务详解
上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉,基础不扎实啊. 下面来好好的学习哈mysql ...
- Spring框架学习-Spring和IOC概述
一:什么是Spring框架? spring是一个分层的javase/EEfull-stack(一站式)轻量级的java开源框架.是为了解决企业开发的复杂性而创建的.框架的主要优势是分层架构,Sprin ...
- 如何学习 Spring ?学习 Spring 前要学习什么?
学习完java核心技术卷一后该掌握什么知识才能学习spring? 学习完Java基础,想要继续学习JavaWeb的基础,我推荐的是下面这个路线(有帮助,记得点赞!): 一.学习Servlet和Tomc ...
- 系统学习Spring之Spring in action(二)
每日一叨: 非常抱歉,由于刚刚接触博客园,很多功能都还没有怎么熟悉,所以第一篇文章的排版不够好,一些重要的信息不够醒目,在接下来的文章里,我会有所改善, 若有哪个地方理解的有问题,可以与我交流,我会即 ...
- Spring系统学习--20180613:Spring的AOP开发说明
Spring的AOP开发说明: 都是基于AspectJ的开发:其中,AOP的基于AspectJ的开发有两种方式,分别是基于AspectJ的XML方式 和 基于 AspectJ的注解方式. 这和Spri ...
- spring系统学习:20180611: Spring中AOP通知的类型
转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9166264.html
- spring系统学习:day4--Spring配置: 集合类型属性的注入
请参考相关视频. 转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9146446.html
- spring系统学习:20180607--Spring的 IOC 的XML和注解的整合开发
转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9152334.html
最新文章
- QlikSense移动端使用攻略
- how is metadata got - DB table iwfndi_med_srh and IWFNDCL_MGW_REQUEST_MANAG
- RxJava 设计理念 观察者模式 Observable lambdas MD
- 什么是3G-SDI光端机?
- 水文特点是什么意思_水文监测仪器设备简介
- h3c使用acl控制ftp访问_H3C访问控制列表(ACL)实例精华
- 画中画功能的遥控器按键设计
- php获取csv文件乱码,php使用fgetcsv读取csv文件乱码解决方法
- 仓库管理一团糟,WMS仓库管理系统如何解决这些难点
- 第一期:GIS基本原理与arcgis软件
- linux根据文件名批量下载,Linux下多文件按照指定顺序批量解压和按照指定文件名更名...
- 文献小镇--国内外文献免费下载!
- 7.前端入门小工具之PS辅助
- 计算机控制系统康波答案,计算机控制系统部分习题参考答案1
- 重庆兰格机械集团有限公司招聘-船讯网
- 【分享】git clone 提示 unable to access ‘http://gitlab.xxxx/gateway.git/‘: Could not resolve host xxxx
- 用 python 实现 简单AI 双人日麻(文字版)之一 建立胡牌逻辑
- winform中动态生成控件
- devcpp中使用unordered_map
- 仁慈的独裁者——Python之父吉多·范罗苏姆
热门文章
- partproble在RHEL 6下无法更新分区信息
- MVC中的View2(转)
- cocos2d-x-2.2中编译cocos2d-win32.vc2010.sln出现:C1083 pthread.h No such file or director错误的解决办法
- 大数据之-Hadoop3.x_MapReduce_序列化案例FlowReducer---大数据之hadoop3.x工作笔记0099
- 用MobaXterm远程连接Centos系统_使用技巧---Linux工作笔记047
- 输入图像四通道 输出图像四通道
- 编程范式之栈的抽象操作
- 关于mac环境下删除cocos2d-x环境变量配置的方法
- MessageBox和AfxMessageBox函数的区别
- 编程之美-程序理解和时间分析