您的位置:首页 > 其它

hibernate持久化对象的四个状态

2017-09-21 22:12 183 查看
持久化操作是Hibernate的核心。

Hibernate的实例状态分为4种:

1、瞬时状态(Transient)

2、持久化状态(Persistent)

3、游离状态(Detached)

4、删除状态

瞬时状态(Transient)

通过new开辟内存空间创建的实体对象,但是它没有纳入hibernate session的管理之中,如果没有变量对它引用,它将会被JVM(垃圾回收器)回收。瞬时状态的对象在内存中是孤立的,它与数据库无任何关联,仅仅是一个信息携带的载体。

一个瞬时状态对象被持久化状态对象引用,它也会自动变为持久化状态对象。例如调用session的save、saveorupdate等方法的时候。

持久化状态(Persistent)

持久化状态对象存在与数据库中的数据关联,它总是与会话状态(Session)和事务(Transaction)关联在一起。当持久化状态对象发生变动时并不会立即执行数据库操作,只有当事务结束时,才会更新数据库,以便保证Hibernate的持久化对象和数据库操作的同步性。

当持久化状态对象变为托管状态对象时,它将不在Hibernate持久层的管理范围之内。

脱管状态(Detached)

当持久化对象的Session关闭之后,这个对象就从持久化状态变为托管状态。托管状态的对象仍然在与数据库中的数据关联,但是他并不在Hibernate的Session管辖范围之内。

如果将脱管状态的对象重新关联到某个新的Session上,它将变回持久化状态对象。

删除态

调用session的delete方法时,对象转为删除态。删除态只能等待被回收

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息