`
hhr_michael
  • 浏览: 72575 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

struts2+hibernate3+spring2读书笔记13(Hibernate的事务控制)

阅读更多
                                    第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. 更新锁:在更新操作的初始化阶段用来锁定可能要修改的资源。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics