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的事务管理---事务回顾相关推荐

  1. JAVA Spring 事务管理事务不回滚问题

    Spring事务管理事务不回滚 dao层: @Repository public class UserDaoImpl implements UserDao { @Autowired private J ...

  2. 列举MySQL事务的隔离级别_mysql dba系统学习(22)数据库事务详解

    上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉,基础不扎实啊. 下面来好好的学习哈mysql ...

  3. Spring框架学习-Spring和IOC概述

    一:什么是Spring框架? spring是一个分层的javase/EEfull-stack(一站式)轻量级的java开源框架.是为了解决企业开发的复杂性而创建的.框架的主要优势是分层架构,Sprin ...

  4. 如何学习 Spring ?学习 Spring 前要学习什么?

    学习完java核心技术卷一后该掌握什么知识才能学习spring? 学习完Java基础,想要继续学习JavaWeb的基础,我推荐的是下面这个路线(有帮助,记得点赞!): 一.学习Servlet和Tomc ...

  5. 系统学习Spring之Spring in action(二)

    每日一叨: 非常抱歉,由于刚刚接触博客园,很多功能都还没有怎么熟悉,所以第一篇文章的排版不够好,一些重要的信息不够醒目,在接下来的文章里,我会有所改善, 若有哪个地方理解的有问题,可以与我交流,我会即 ...

  6. Spring系统学习--20180613:Spring的AOP开发说明

    Spring的AOP开发说明: 都是基于AspectJ的开发:其中,AOP的基于AspectJ的开发有两种方式,分别是基于AspectJ的XML方式 和 基于 AspectJ的注解方式. 这和Spri ...

  7. spring系统学习:20180611: Spring中AOP通知的类型

    转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9166264.html

  8. spring系统学习:day4--Spring配置: 集合类型属性的注入

    请参考相关视频. 转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9146446.html

  9. spring系统学习:20180607--Spring的 IOC 的XML和注解的整合开发

    转载于:https://www.cnblogs.com/JAVA-STUDYER/p/9152334.html

最新文章

  1. QlikSense移动端使用攻略
  2. how is metadata got - DB table iwfndi_med_srh and IWFNDCL_MGW_REQUEST_MANAG
  3. RxJava 设计理念 观察者模式 Observable lambdas MD
  4. 什么是3G-SDI光端机?
  5. 水文特点是什么意思_水文监测仪器设备简介
  6. h3c使用acl控制ftp访问_H3C访问控制列表(ACL)实例精华
  7. 画中画功能的遥控器按键设计
  8. php获取csv文件乱码,php使用fgetcsv读取csv文件乱码解决方法
  9. 仓库管理一团糟,WMS仓库管理系统如何解决这些难点
  10. 第一期:GIS基本原理与arcgis软件
  11. linux根据文件名批量下载,Linux下多文件按照指定顺序批量解压和按照指定文件名更名...
  12. 文献小镇--国内外文献免费下载!
  13. 7.前端入门小工具之PS辅助
  14. 计算机控制系统康波答案,计算机控制系统部分习题参考答案1
  15. 重庆兰格机械集团有限公司招聘-船讯网
  16. 【分享】git clone 提示 unable to access ‘http://gitlab.xxxx/gateway.git/‘: Could not resolve host xxxx
  17. 用 python 实现 简单AI 双人日麻(文字版)之一 建立胡牌逻辑
  18. winform中动态生成控件
  19. devcpp中使用unordered_map
  20. 仁慈的独裁者——Python之父吉多·范罗苏姆

热门文章

  1. partproble在RHEL 6下无法更新分区信息
  2. MVC中的View2(转)
  3. cocos2d-x-2.2中编译cocos2d-win32.vc2010.sln出现:C1083 pthread.h No such file or director错误的解决办法
  4. 大数据之-Hadoop3.x_MapReduce_序列化案例FlowReducer---大数据之hadoop3.x工作笔记0099
  5. 用MobaXterm远程连接Centos系统_使用技巧---Linux工作笔记047
  6. 输入图像四通道 输出图像四通道
  7. 编程范式之栈的抽象操作
  8. 关于mac环境下删除cocos2d-x环境变量配置的方法
  9. MessageBox和AfxMessageBox函数的区别
  10. 编程之美-程序理解和时间分析