`

回顾总结1

阅读更多

一、实体对象的生命周期

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

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

 

User user = new User();

User.setName(“admin”);     //此时的user对象处于Transient(自由状态)并没有被Hibernate框架所管理

 

2、  持久状态(Persistent)

何谓 Persistent?即实体对象已经处于被Hibernate实体管理容器所管理的状态。这种状态下这个实体对象的引用将被纳入Hibernate实体管理容器所管理。处于Persistent状态的实体对象,对它的变更也将被固化到数据库中,在J2EE中通常指的是一个PO。处于Persistent状态的实体可以简单的理解为:如果一个实体对象与session发生了关联,并且处于session的有效期内,那么这个实体对象就处于Persistent状态。

 

Transaction tx = session.beginTransaction();

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

Tx.commit();

Transaction tx2 = session.beginTransaction();

User.setName(“modity name”);     在这个事务中我们并没有显示的调用save()方法但是由于Persistent状态的对象将会自动的固化到数据库中,因此此时正处在Persistent状态的user对象的变化也将自动被同步到数据库中

Tx2.commit();

 

3、  游离状态(Detached)

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

 

Session.close();       //user对象关联的session被关闭,因此此时的user对象进入Detached(游离状态)

Session session2 = SessionFactory.getSession();   //此时正处于Detached状态的user对象由于再次借助与session2被纳入到Hibernate的实体管理容器所以此时的user对象恢复到Persistent状态

Transaction tx3 = session2.beginTransaction();

Session2.update(user);

Tx3.commit();

 

既然Transient状态的实体与Detached状态的实体都与Hibernate的实体管理容器没有关系,那他们到底存在哪些差异?差异就在于处于Transient状态的只有一个Name的属性,此时的user对象所包含的数据信息仅限于此,他与数据库中的记录没有任何瓜葛。但是处于Detached状态的实体已经不止包含Name这个属性,还被赋予了主键也就是通常POJO里的id属性,由于id是主键,他可以确定数据库表中的一条唯一的记录,那么自然的处于Detached状态的实体就能与数据库表中拥有相同id的记录相关联。这就是他们之间所存在的差异,简而言之,Transient状态的实体缺乏与数据库表记录之间的联系,而Detached状态的恰恰相反,只不过是脱离了session这个数据库操作平台而已。

 

 

 

 

三、多对一关系映射

1、  实体对象:student(学生)clazz(班级),关系对象:t_studentt_clazz两个表。Student对应clazz实体对象是多对一的关系,多个学生属于一个班级。在student关系映射中加上多对一个的关系:

<many-to-one name=”clazz” column=”clazz_id” not-null=”true”/>

2、  实体对象:student(学生)clazz(班级),关系对象:t_studentt_clazzt_studentclazz三个表,t_studentclazz表存储学生和班级的关联关系。

student关系映射中加上多对一个的关系:

<join table=”t_studentclazz” optional=”true”>

           <key column=”student_id” unique=”true”/>

           <many-to-one name=”clazz” column=”clazz_id” not-null=”true”/>

</join>

 

 

四、一对一关系映射(假设一个班级只有一个学生,不过分)

1、  基于外键关联的单向一对一关联和单向多对一关联几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约束。

<many-to-one name=”clazz” column=”clazz_id” unique=”true” not-null=”true”/>

2、  基于主键关联的单向一对一关联通常使用一个特定的id生成器。

<id name=”id” column=”clazz_id”>

           <generator class=”foreign”>

                    <param name=”property”>clazz</param>

           </generator>

           <one-to-one name=”clazz” constrained=”true”/>

</id>

3、  基于连接表的单向一对一关联

<join table=”t_studentclazz” optional=”true”>

           <key column=”student_id” unique=”true”/>

           <many-to-one name=”clazz” column=”clazz_id” not-null=”true” unique=”true”/>

</join>

 

 

 

 

 

分享到:
评论

相关推荐

    JavaSE回顾总结(狂神说java).xmind

    javaSE回顾总结,学习笔记,查漏补缺。 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态...

    营销总监总经理季度回顾总结PPT汇报模板(拿了就能用.pptx

    通过这样的季度回顾总结,营销总监和总经理能够全面理解公司的业务表现,识别成功因素,发现问题,并据此制定下一季度的策略和计划。此外,此模板的易用性使得快速制作专业报告成为可能,节省了准备汇报的时间,提高...

    项目管理培训精彩回顾及总结

    在“项目管理培训精彩回顾及总结”中,我们可以深入探讨项目管理的核心概念、流程和在中国的具体实践。项目管理是一门涉及计划、组织、领导和控制资源以实现特定目标的学科。在中国,由于其独特的商业环境和文化背景...

    项目总结与回顾.xmind

    项目总结与回顾.xmind

    项目管理培训回顾及总结.ppt

    "项目管理培训回顾及总结.ppt"的描述中,提到了一些关键知识点,这些知识点对于任何从事或希望提升项目管理技能的人来说都是宝贵的教训。 首先,项目管理的核心挑战在于如何在时间、质量和资源的三重限制下达成目标...

    我的大学记忆——大学生生活回顾总结ppt模板.rar

    标题中的“我的大学记忆——大学生生活回顾总结ppt模板”表明这是一个关于个人大学经历的PPT模板,用于回顾和总结大学时光。这样的模板通常包含多个部分,如自我介绍、学习历程、社团活动、友情与爱情、成长感悟等,...

    企业半年度回顾总结报告模板.pptx

    在企业运营过程中,半年度回顾总结报告是评估和规划未来工作的重要工具。它帮助企业了解过去六个月的业务表现,找出成功之处与不足,并为下半年的工作提供方向。以下是对这份"企业半年度回顾总结报告模板"中六个核心...

    2012工作回顾总结PPT模板.ppt

    【标题】:“2012工作回顾总结PPT模板.ppt”是一份专门用于年度工作总结的演示文稿,旨在帮助用户系统地回顾和呈现过去一年的工作成果与经验。通过使用这样的模板,个人或团队可以清晰地展示他们在2012年的各项关键...

    参考资料-如何做半年总结?6个维度28个方面回顾总结.zip

    6个维度28个方面回顾总结.zip"的压缩包提供了一个全面的框架,帮助我们系统地进行半年度的工作总结。以下是根据标题和描述中提到的6个维度和28个方面的详细介绍,以及它们在IT领域的应用和重要性。 1. **目标达成**...

    难点总结回顾.md

    难点总结回顾.md

    大学生个人总结回顾范文_大学生总结回顾精选五篇.docx

    1. **自我评估与成长**:在总结回顾中,大学生通常会提到自己在学习、思想、技能等方面的成长。例如,提升了自己的政治素养,通过参加党组织的学习活动,了解并遵循党的基本理论和原则。 2. **工作态度与团队协作**...

    股权分置改革的回顾与总结.pdf

    股权分置改革的回顾与总结

    基于Javascript的Tomorrow-Will-Be-Better丝绸之路倡议回顾与总结设计源码

    Will-Be-Better丝绸之路倡议回顾与总结设计源码,包含82个文件,其中包括42个PNG文件、20个JavaScript文件、6个CSS文件、5个SCSS文件、2个Markdown文件、2个XLSX文件、2个MAP文件和1个HTML文件。此外,还包括1个GIF...

    个人回顾工作总结范文.doc

    个人回顾工作总结范文.doc

    个人回顾工作总结范本.pdf

    个人回顾工作总结范本.pdf

    19 联想管理 联想项目管理培训回顾及总结.pptx

    19 联想管理 联想项目管理培训回顾及总结.pptx

    幼儿老师学期工作回顾总结例文_幼儿老师总结5篇.docx

    【标题】中的“幼儿老师学期工作回顾总结”指的是幼教工作者对自己一学期教育教学工作的反思与总结,而【描述】和【标签】中的“安全”强调了在幼教工作中安全保障的重要性。【部分内容】则是展示了两篇不同的幼儿...

    Folder项目_总结回顾

    【标题】"Folder项目_总结回顾"涉及到的是一个IT项目的经验总结,主要涵盖了Silverlight、WCF、IIS以及C1TreeView和C1FlexGrid这两个控件的使用。以下是关于这些知识点的详细说明: 1. **Silverlight**:...

Global site tag (gtag.js) - Google Analytics