hibernate的三种状态是瞬时状态、持久状态、托管状态
瞬时态(临时态、自由态):不存在持久化标识 OID,尚未与 Hibernate Session 关联对象, 被认为处于瞬时态,失去引用将被 JVM。
回收持久态:存在持久化标识 OID,与当前 session 有关联,并且相关联的 session 没有关闭 , 并且事务未提交。
脱管态(离线态、游离态):存在持久化标识 OID,但没有与当前 session 关联,脱管状态 改变 hibernate 不能检测到。

比如有一个User实体类和一张User表。当new了一个user对象,但没有开启事务。此时user就处于瞬时状态,与数据库的数据没有任何联系,当开启事务后,执行了session.save()方法后,session缓存中存放了该user对象,而数据库中也有相应的这条数据,此时就转换为持久状态。当事务提交后,session被销毁。session缓存中就没有user对象,而数据库表中有相应记录,此时为托管状态。

posted on 2021-01-14 08:54  Wang梦怡  阅读(167)  评论(0编辑  收藏  举报