第14章 Hibernate事务控制
本章导读语
在日常生活中,常常会遇到一组依赖的操 作行为,例如在网上进行交易时,它分为多个步骤,当其中一个步骤发生异常时,视为个操作不成功,因此需要将状态变到最初始的状态,这种情况可称为事务。
一. 数据库的ACID特征
1.Atomic(原子性):事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
2.Consistency(一致性):事务在完成时,必须使所有的数据都保持一致状态。
3. Isolation(隔离性):由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。
4.Durability(持久性):事务完成之后,它对于系统的影响是永久的,该修改即使出现致命的系统故障也将一直保持。
二.事务边界分为如下3种:
1. 开始边界:开始事务。
2. 正常结束边界:提交事务。
3. 异常结束边界:回滚事务。
在Hibernate中,提供了这3种边界的操作方法,开始边界使用的是Session接口的beginTransaction()方法,正常结束边界使用的是Transaction提供的commint()方法,异常结束边界的是Transaction()接口提供的rollback()方法,在MySQL中,INNODB和BOB类型的表是支持事务的,而默认的表类型MyISAM并不支持事务,所以开发人员在创建表时需要执行表类型为INNODB或BOB,或通过:
Alter table 表的名称 type=INNODB;修改表的类型为支持事务的类型。
三. 常见的事务并发问题
1. 脏读:一个事务(事务甲)读到另一个事务(事务乙)未提交的更新数据,并且事务甲在数据上进行了更新操作,接关事务乙撤消了更新操作,此时事务甲操作的就是脏读。
2. 虚读:一个事务(事务甲)读到另一个事务(事务乙)已提交的新插入的数据
3. 不可重复读:一个事务(事务甲)读到另一个事务(事务乙)已提交的更新数据
4. 第一类丢失更新:一个事务在撤销事务时,将其事物已提交的更新数据覆盖。
5. 第二类丢失更新:一个事务覆盖另一个事务已提交的更新数据。
四. 数据库的锁机制
1. 数据库级锁:锁定整个数据库。
2. 表级锁:锁定一个表。
3. 区域级锁:锁定数据库的指定区域。
4. 页面级锁:锁定数据库的特定页面。
5. 键值级锁:锁定带有索引的一行数据。
6. 行级锁:锁定表中的单行数据。
7. 共享锁:用于读数据操作,允许其他事务同时读取锁定的资源,但不允许其他事务对锁定的资源进行更新。
8. 独占锁:适用于更新数据的场合,不允许其他事务读取或修改其锁定的资源。
9. 更新锁:在更新操作的初始化阶段用来锁定可能要修改的资源。
分享到:
相关推荐
使用Struts + Spring + Hibernate完成用户登陆笔记使用Struts + Spring + Hibernate完成用户登陆笔记
struts2+hibernate+spring三大框架知识点笔记
非常详细的SSH笔记,Struts2笔记+Hibernate3.6笔记+Spring3笔记,word文档,内容非常详细,可以直接看我的笔记就能轻松学会框架
简单的SSH项目 使用spring+hibernate+struts2 有详细的创建项目笔记 代码配置都有注释
使用Struts + Spring + Hibernate完成分页笔记使用Struts + Spring + Hibernate完成分页笔记使用Struts + Spring + Hibernate完成分页笔记
轻量级J2EE企业应用实战--Struts+Spring+Hibernate整合开发笔记
内涵数据库设计模型 和数据库设计代码! 图书管理系统: 数据库使用的mysql 里面的发送e-mail我用的是一个我申请的邮箱在测试 可以用自己的! 代码功能基本都有注释.... 才学完s2sh的入门笔记吧! 供学习使用........
SSH开发笔记,特别适合入门者学习
Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记.doc
留言管理程序_Struts + Spring + Hibernate笔记留言管理程序_Struts + Spring + Hibernate笔记
NULL 博文链接:https://jsrookie.iteye.com/blog/294756
Struts+Spring+Hibernate整合笔记
spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合
SSH整合学习笔记之struts2+spring+hibernate+c3p0源码
SSH框架集成是较复杂和难理解的,只有在不断的练习和使用中才能慢慢的理解其中的原理,仅凭看视频是远远不够的,因为这些涉及了尤其是spring底层的好多类以及...本文只要是struts1+spring+hibernate(SSH1)集成问题。
Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记
struts+spring+hibernate配置笔记
Struts+Spring+Hibernate整合笔记
Struts+spring+hibernate学习笔记! - Struts原理与实践
传智播客2016版hibernate+struts2+Spring框架视频+资料课件+笔记 day01-day04 可提供视频