Hibernate管理对象三种状态:

(1)瞬时状态

1、没有ID

2、对象没有与Session关联

(2)持久化状态

1、有ID

2、与Session有关联

(3) 游离状态

1、有ID

2、与Session没有关联

Hibernate事务配置_Hibernate

一级缓存:

Session对象中包含一个可以存储对象的容器(集合).这个集合就是Hibernate的一级缓存.

作用:提高效率

Hibernate事务配置_Hibernate_02

Hibernate事务配置

事务的特性:

a 原子性: 强调事务的不可分割.

c 一致性: 事务的执行的前后数据的完整性保持一致.

i 隔离性: 一个事务执行的过程中,不应该受到其他事务的干扰

d 持久性: 事务一旦结束,数据就持久到数据库

事务并发产生的问题:

脏读: 读到了别人没提交的数据

不可重复读: 两次连续读取.结果不一致

幻|虚读: 整表的操作.结果与预期不符.

数据库隔离级别:

1 读未提交 脏读|不可|虚读

2 读已提交 不可|虚读

4 可重复读 虚读 (mysql默认)

8 串行化 没有问题.效率低

配置隔离级别:

1|2|4|8

在项目中事务的应用

1.可以使用Transaction对象控制事务的开启|提交|回滚

2.事务应在Service层打开.包裹Service方法.

3.确保Service中操作事务的Session与Dao层操作数据的Session应为同一个Session对象

4.使用getCurrentSession方法获得与当前线程绑定的Session对象.

注意:调用getCurrentSession方法,必须加上这条配置.不加报错!!!

Hibernate事务配置_Hibernate_03

注意: getCurrentSession方法.在事务提交时会自动关闭Session.一定不要手动进行关闭.