zoukankan      html  css  js  c++  java
  • Hibernate中实体对象的状态

      实体对象的状态

      这里的实体对象是指Hibernate的O/R映射关系中的域对象(即O/R中的O)。实体对象的生命周期是指实体对象由产生到被GC回收的一段过程,实体对象的生命周期包括3种状态:自由状态(Transient),持久状态(Persistent)和游离状态(Detached)。

      1.自由状态

      自由状态是指实体对象在内存中自由存在,但此时它与数据库无关。主要有一下两个特征:

      >> 不处于Session的缓存中,也就是不被任何一个Session关联。

      >> 在数据库中没有对应的记录。

      2.持久状态

      持久状态是指实体对象处于Hibernate的管理情况下的状态。在持久状态下,实体对象的引用被纳入Hibernate实体容器中加以管理。处于此状态的实体对象,会被Hibernate固化到数据库中。总之,如果一个实体对象与某个Session实例发生了关联,并且处于这个Session的有效期内,那么它就处于持久状态。处于持久状态的实体对象具有以下特征:

      >> 位于一个Session实例的缓存中,也可以说,持久化对象总是被一个Session实例关联。

      >> 持久化对象和数据库中的相关记录对应。

      >> Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库。

      >> Session的save()方法把实体对象从自由状态转变为持久状态。

      >> Session的load()方法或get()方法返回的实体对象总是处于持久状态。

      >> Session的update(),saveOrUpdate()和lock()方法使实体对象从游离状态转变为持久状态。

      3.游离状态

      当处于持久状态的实体对象,其对应的Session关闭后,这个实体对象就处于了游离状态。也可以认为Session对象是实体对象在持久状态的宿主,而实体对象失去了这个宿主,也就是这个宿主失效,那么这个实体对象就进入了游离状态。处于游离状态的实体对象有如下特征:

      >> 不再位于Session的缓存中,也可以说游离状态的实体对象不被Session关联。

      >> 游离状态是由持久化对象转变来的,因此在数据库中可能还存在与它对应的记录。

  • 相关阅读:
    POJ 3268 Silver Cow Party (Dijkstra)
    怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
    CF Amr and Music (贪心)
    CF Amr and Pins (数学)
    POJ 3253 Fence Repair (贪心)
    POJ 3069 Saruman's Army(贪心)
    POJ 3617 Best Cow Line (贪心)
    CF Anya and Ghosts (贪心)
    CF Fox And Names (拓扑排序)
    mysql8.0的新特性
  • 原文地址:https://www.cnblogs.com/leny/p/4802375.html
Copyright © 2011-2022 走看看