博为峰Java技术文章 ——JavaEE Hibernate实例状态

博为峰小博老师数据库

Hibernate的实例状态分为3种,分别为瞬时状态(Transient)、持久化状态(Persistent)和脱管状态(Detached)。code

瞬时状态(Transient)对象

实体对象是经过Java中的new关键字开辟内存空间建立的Java对象,可是它并无归入Hibernate Session的管理中,若是没有变量对它引用,它将被Java垃圾回收器回收。瞬时状态的对象在内存中是孤立存在的,它与数据库中的数据无任何关联,仅是一个信息携带的载体。blog

假如一个瞬时状态对象被持久化状态对象引用,它也会自动变为持久化状态对象。事务

持久化状态(Persistent)ip

持久化状态对象存在与数据库中的数据关联,它老是与会话状态(Session)和事务(Transaction)关联在一块儿。当持久化状态对象发生改动时并不会当即执行数据库操做,只有当事务结束时,才会更新数据库,以便保证Hibernate的持久化对象和数据库操做的同步性。当持久化状态对象变为脱管状态对象时,它将不在Hibernate持久层的管理范围以内。内存

脱管状态(Detached)get

当持久化状态的对象的Session关闭以后,这个对象就从持久化状态的对象变为脱管状态的对象。脱管状态的对象仍然存在与数据库中的数据关联,只是它并不在Hibernate的Session管理范围以内。若是将脱管状态的对象从新关联某个新的Session上,它将变回持久化状态对象。同步

相关文章
相关标签/搜索