首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-10-10 
struts2+hibernate3+spring2读书笔记13(Hibernate的事务控制)第14章 Hibernate事务控制本章导读语在日常生

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

热点排行