Hibernate中POJO类的状态
POJO类所处的状态
POJO类所处的状态有三种:
- 瞬时态(Transient):对象保存在内存之中,并没有在数据库之中进行存储。也就是说如果对像一直没有存储,那么就有可能被GC回收,回收之后就象不存在一样。
- 持久态(Persistent):将内存中的对象保存在数据库中,或者某一个对象通过数据库读取,此时的Session如果没有关闭,那么就是持久态。持久态的最大特征是属性的变化将引起数据库的变化。如果某一个对象处于持久态的状态下,只需要调用setter方法就可以更新了。
-
游离态(Detached):如果Session关闭了,那么读取出来的数据就变为了游离态,这个时候对象保存在内存之中,如果长时间不使用将被GC回收,与瞬时态最大的区别只有一点:此时数据库有对应数据。
实际上在Session里面存在有get()和load()两个操作方法,这两个方法都是根据ID进行数据查询,使用ID查询也会使对象处于持久态(前提:不关闭Session)
特点:
- 瞬时态与游离态无法更新数据
- 持久态可以更新,但是必须在Session关闭之前完成更新
切换方法:
4. 瞬时态 ----> 持久态:save()方法、update()方法
5. 持久态 ----> 游离态:关闭Session
6. 游离态 ----> 瞬时态:使用delete()删除