瞬时态(Transient):对象保存在内存之中,并没有在数据库中进行存储,也就是说对象一直没有存储,那么就有可能被GC回收,回收之后就像不存在一样;
持久态(Persostent):将内存中的对象保存在数据库之中,或者某一个对象通过数据库读取,此时Session没有关闭,那么就是持久态,持久态的最大的特征就是属性的变化将引起数据库的变化,
游离态(Detached):如果Session关闭了,那么已经读取出来的数据就变为了游离态,这个对象保存在内存之中,如果长时间不使用将被GC回收,与瞬时态最大的区别只有一点:数据库有对应数据
瞬时态与游离态无法更新数据
持久态可以更新,但是必须在Session关闭之前完成更新
切换方法:
瞬时态->持久态:使用save()方法,update()方法
持久态->游离态:关闭Session,get();
游离态->瞬时态:delete()
面试题:请解释Hibernate对象的三种状态?
Hibernate对象数据分别有:瞬时态,持久态,游离态
瞬时态指的是对象只在内存中保存,数据库没有对应数据;
持久态指的是对象保存或者取得之后不关闭Session的情况下,可以利用setter进行数据修改
游离态指的是对象读取完成或保存成功之后关闭了Session后的状态,此时数据库对应数据.
这三种状态之中最为重要的就是持久态,它可以为我们的开发带来方便,持久态的理论来源是EJB2.x中实体Bean技术的理论来源