Hibernate 实体类对象有三种状态:瞬时态(也叫临时态,自由态)、持久态、游离态(也叫脱管态)
三种状态的特点
瞬时态(Transient) :没有持久化标识OID,没有被纳入到 Session 对象的管理
持久态(Persistent):有OID标识,在Session 对象的管理中
游离态(Detached ) :有OID标识,脱离了Session 对象的管理
注意:
以下的session,是Hibernate工厂中生产的session,不是servlet中的。
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();三种状态的获取和转换
直接获取方式
获取瞬时态 new Foo()
获取持久态 session.get()游离态不能直接获取
状态转换
瞬时--->持久 session->save()
瞬时--->游离 session->setXxx()
持久--->瞬时 session->delete()
持久--->游离 session->close()
游离--->瞬时 session->delete()
游离--->持久 session->update()