Hibernate三种对象状态

hibernate的三种状态
a)瞬时状态(Transient):刚被创建,还没有被持久化,不在Session的缓存中,在Hiberante中可以通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将相应的数据插入数据库中,此时瞬时对象转换为持久化对象(Persistent)

b)持久化状态(Persistent):该对象在数据库中有相应的记录,并拥有一个持久标识,如果对这个对象使用hibernate的delete方法,那么这个对象将会由persistent状态转换到transient,因为该对象已经被删除,对象不再与数据库的记录关联。
持久态对象具有如下特点:(1)和session实例关联。(2)在数据库中有与之关联的记录。

c)脱管状态(Detached):已经被持久化了,但不在Session的缓存中。当对一个session执行close()或clear()、evict()之后,persistent对象将变成detached对象,此时该对象虽然在数据库里有持久标识,但是这个对象已经不在session范围内,不在hibernate的管理下。当脱管对象被重新关联到session上时,并再次转变成持久对象。脱管对象拥有数据库的持久标识符,可以通过update、saveOrUpdate等方法,转变成持久对象。   
脱管对象具有如下特点:(1)本质上与瞬时对象相同,在没胡任何变量引用它时,JVM会在适当的时候将它回收(2)脱管状态对象比持久状态对象多一个数据标识值。


三种状态相关联的图

Hibernate三种对象状态

你可能感兴趣的:(jvm,C++,c,Hibernate,C#)