>>分享JPA、Hibernate、Mybatis对象持久化技术,对《精通JPA与Hibernate:Java对象持久化详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23675 个阅读者 刷新本主题
 * 贴子主题:  理解事务的四种隔离级别 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-02-10 06:03:20     消息  查看  搜索  好友  邮件  复制  引用

事务

事务是访问数据库的一个操作序列
事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。

事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是:

1、原子性

即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败,则其他子事务的数据库操作则会被回滚,即数据库回到事务执行前的状态,不会发生状态转换。

2、一致性

事务的执行使得数据库从一种正确状态转换成另外一种正确状态。

3、隔离性

在事务正确提交之前,不允许把事务对该数据的改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应该显示给其他事务。

4、持久性

事务正确提交之后,其结果将永远保存在数据库之中,即使在事务提交之后有了其他故障,事务的处理结果也会得到保存。

事务保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。
事务并发操作带来的问题
1)丢失更新:   一个事务的更新覆盖了另一个事务的更新。
2)脏读:          一个事务读取了另一个事务未提交的数据。
3)不可重复读:一个事务两次读取同一个数据,两次读取的数据不一致。
4)幻象读:       一个事务两次读取一个范围的记录,两次读取的记录数不一致。

数据库事务的隔离级别有4种,由低到高分别为未提交读(Read  uncommitted) 、已提交读(Read  committed)、可重复读(Repeatable read) 、串行化(Serializable) 。
  • 未提交读: 一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而 且能看到其他事务没有提交的对已有记录的更新。
  • 已提交读: 一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。
  • 可重复读: 一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。
  • 串行化: 一个事务在执行过程中完全看不到其他事务对数据库所做的更新。(事务执行的时候不允许别的事务并发执行。事务串行化执行,事务只能一个接着一个地执行,而不能并发执行)
事务隔离级别解决的并发问题:

点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小


程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 flybird 在 2020-02-23 11:39:45 重新编辑]
  Java面向对象编程-->数组
  JavaWeb开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->映射一对多关联关系
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->Vue简介
  Vue3开发-->Vue组件开发高级技术
  孙卫琴的Java对象持久化技术之旅-视频讲座
  孙卫琴的《精通JPA与Hibernate》的读书笔记:在程序中动态指定...
  JPA和事务管理
  用CriteriaBuilder进行动态查询
  盘点Hibernate的值类型映射技巧
  JPA EntityManager find和getReference方法异同
  Hibernate ORM 5.3.9.Final 发布,常规更新版本
  Hibernate的八种对象标识符生成策略
  JPA API入门
  Hibernate 对象-关系映射: @注解与xml 配置方式比较
  Hibernate配置文件中的hibernate.hbm2ddl.auto属性详解
  Hibernate 5的新特性
  Hibernate5源码解析:SessionFactroy的创建过程
  精典:Hibernate5官方用户手册 中文版免费下载
  在看孙老师的hibernate书。。。
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。