知识大全 Hibernate中实体对象的生命周期

Posted 实体

篇首语:鸟欲高飞先振翅,人求上进先读书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate中实体对象的生命周期相关的知识,希望对你有一定的参考价值。

Hibernate中实体对象的生命周期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  实体对象的生命周期在Hibernate应用中是一个很关键的概念 正确的理解实体对象的生命周期将对我们应用Hibernate做持久层设计起到很大的作用 而所谓的实体对象的生命周期就是指实体对象由产生到被GC回收的一段过程 在这过程中我们需要理解的就是实体对象生命周期中的三种状态

   自由状态(Transient)

  所谓的Transient状态 即实体对象在内存中自由存在 与数据库中的记录无关 通常是我们的J EE中VO 并没有被纳入Hibernate的实体管理容器

       Test test = new Test();

           test setName( energykk );

           //此时的test对象处于Transient(自由状态)并没有被Hibernate框架所管理

  

   持久状态(Persistent)

  何谓 Persistent? 即实体对象已经处于被Hibernate实体管理容器容器所管理的状态 这种状态下这个实体对象的引用将被纳入Hibernate实体管理容器容器所管理

  处于Persistent状态的实体对象 对它的变更也将被固化到数据库中

  在J EE中通常指的是一个PO

  Transaction tr = session beginTransaction();

  session save(test);

  //此时的test对象已经处于Persistent(持久状态)它被Hibernate纳入实体管理容器

  mit();

  Transaction tr = session beginTransaction();

  test setName( xukai );

  //在这个事务中我们并没有显示的调用save()方法但是由于Persistent状态的对象将会自动的固化到

  //数据库中 因此此时正处在Persistent状态的test对象的变化也将自动被同步到数据库中

  mit();

  处于Persistent状态的实体可以简单的理解为:如果一个实体对象与session发生了关联 并且处于session的有效期内 那么这个实体对象就处于Persistent状态

   游离状态(Detached)

  处于Persistent状态的实体对象 其对应的session关闭以后 那么这个实体就处于Detached状态

  我们可以认为session对象就是一个Persistent的宿主 一旦这个宿主失效 那么这个实体就处于Detached状态

  session close();

  //与test对象关联的session被关闭 因此此时的test对象进入Detached(游离状态)

  session = HibernateSessionFactory getSession();

  Transaction tr = session beginTransaction();

  session update(test);

  //此时正处于Detached状态的test对象由于再次借助与session 被纳入到Hibernate的实体管理容器所以此时的

  //test对象恢复到Persistent状态

  test setName( jjjj );

  mit();

  session close();

  既然Transient状态的实体与Detached状态的实体都与Hibernate的实体管理容器没有关系 那他们到底存在哪些差异?

  差异就在于处于Transient状态的只有一个Name的属性 此时的test对象所包含的数据信息仅限于此 他与数据库中的记录没有任何瓜葛

  但是处于Detached状态的实体已经不止包含Name这个属性 还被赋予了主键也就是通常POJO里的id属性 由于id是主键 他可以确定数据库表中的一条

  唯一的记录 那么自然的处于Detached状态的实体就能与数据库表中拥有相同id的记录相关联

cha138/Article/program/Java/ky/201311/28035

相关参考

知识大全 详细解读JVM中的对象生命周期

详细解读JVM中的对象生命周期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在JVM运行空间中

知识大全 用Java Annotations管理对象生命周期

用JavaAnnotations管理对象生命周期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要

知识大全 Hibernate中重要对象[1]

Hibernate中重要对象[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  →→Sessi

知识大全 Hibernate中重要对象[4]

Hibernate中重要对象[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ◆Sessin

知识大全 Hibernate中重要对象[3]

Hibernate中重要对象[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ()Sessi

知识大全 Hibernate中重要对象[2]

Hibernate中重要对象[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用方法链编程

知识大全 Hibernate中Query对象的使用

Hibernate中Query对象的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishix

知识大全 实体CMP-EJB和Hibernate大比拼

实体CMP-EJB和Hibernate大比拼  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JE

知识大全 Hibernate中po对象的三种状态分析

Hibernate中po对象的三种状态分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hib

知识大全 hibernate关系映射

  一对象关系映射基础  对象间的基本关系  首先我简要阐明一下对象之间的基本关系在这以后UML的课程中也会深入的学习对象具有的四种基本关系  关联关系关联关系在设计模式中是被提倡优先使用于继承关系的