Hibernate的事务处理方式和并发控制
事务的概念
事务是访问数据库时,可能更新数据库中各种数据项的一个程序执行单元,用来确保数据的完整性,避免数据库中的数据在不正确的操作下引起的错误更改。
事务的4个特性
1.原子性。指事务执行单元是一个不可分割的单元,这些单元要么都执行,要么都不执行。
2.一致性。指无论执行了什么操作,都应该保证数据的完整性和业务逻辑的一致性。
3.隔离性。在事务执行过程中,多个执行单元间操作的数据都是其它单元没有操作或者操作结束后的数据,保证每一个执行单元操作的数据都有完整的数据空间。
4.持久性。事务结束后,执行单元操作的数据被保存在数据库中,这些数据的保存状态是永久性的,不会因为系统故障而消失。
Hibernate框架中支持两种事务处理方式
(1) JDBC事务处理 (2) JTA (Java Transaction API)事务处理
这两种事务处理方式默认情况下都是关闭的,可以通过配置开启事务管理,如果不进行配置,会默认使用JDBC事务。
(1)编程过程中应用JDBC事务管理的流程
1.实例化Configure类读取配置文件或者属性文件
2.获取sessionFactory实例
3.通过sessionFactory获得session实例
4.通过session.beginTransaction()获得事务Transaction对象
5.开始事务,进行数据操作
6.提交事务,数据处理结束后提交事务
7.回滚事务,如果数据处理出现异常则回滚事务,恢复原始数据
8.提交事务,关闭session
(2)编程过程中应用JTA事务管理的流程
概念--JTA是J2EE事务服务的标准解决方式,通过容器来控制事务。主要应用在多数据库操作的分布式系统中。JTA事务处理首先创建事务处理对象,然后实例化Session,它的事务生命周期要比session的生命周期长。另外,JTA事务处理和JDBC事务处理不能同时使用。流程如下:
1.创建JTA事务对象
2.开始事务
3.获得session并编写操作数据的方法
4.关闭session
5.提交事务
6.如果遇到到异常事件则回滚事务