Hibernate中POJO类的状态

POJO类所处的状态

POJO类所处的状态有三种:

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

特点:

  1. 瞬时态与游离态无法更新数据
  2. 持久态可以更新,但是必须在Session关闭之前完成更新

切换方法:
4. 瞬时态 ----> 持久态:save()方法、update()方法
5. 持久态 ----> 游离态:关闭Session
6. 游离态 ----> 瞬时态:使用delete()删除