一、瞬时态。
- 由new关键字创建的对象,它与数据库没有任何关联。
- 瞬时态对象一旦不再被其他对象引用,那么很快将被Java虚拟机回收。
二、持久态。
- 对象在数据库中具有相呼应的记录,并拥有一个持久化表示。
- 持久太对象谓语一个Session实例的缓存中,即总是与一个Session实例相关联。当Session清理缓存时,会根据持久太对象的属性变化同步更新数据库。
三、托管态。
- 持久态对象经过close、clear或evict方法后,持久态对象将转化为托管态。此后该对象属性址发生改变,Hibernate将不太同步到数据库中。
瞬时态与托管态的相同之处在于,如果不再被任何对象引用,都将很快被垃圾回收;不同之处在于,托管态对象有数据库记录标示,而瞬时态没有。
四、Hibernate方法介绍。
- save()方法:将对象由瞬时态转变为持久态。
- load或get方法:活的对象的状态处于持久态。
- find()方法:获得的list集合中的对象处于持久态。
- update()、saveOrUpdate()和lock()方法:可将托管态对象转变为持久态。
- close()方法:调用后,Session的缓存会被清空,缓存中所有持久太对象状态都将转变为托管态。处于托管状态的对象称为游离对象,当不再被引用时,将被Java虚拟机垃圾回收机制清除。
- evict()方法:可将Session缓存中一个置顶的持久妆太对象删除,使其转变态托管态对象。当缓存中保存了大量处于持久态的对象时,为了节省内存空间,可以调用evict()方法删除一些持久对象。