`
wzw00001
  • 浏览: 92193 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernate学习日记2

阅读更多
Hibernate继承映射的第一种策略:每个具体类一张表

1、如何映射
这种策略是使用union-subclass标签来定义子类的。每个子类对应一张表,而且这个表的信息是完备的,
即包含了所有从父类继承下来的属性映射的字段(这就是它跟joined-subclass的不同之处,joined-subclass定义的子类的表,
只包含子类特有属性映射的字段)。实现这种策略的时候,有如下步骤:
父类用普通<class>标签定义即可
子类用<union-subclass>标签定义,在定义union-subclass的时候,需要注意如下几点:
Union-subclass标签不再需要包含key标签(与joined-subclass不同)
Union-subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),
也可以与class标签平行。 当Union-subclass标签的定义与class标签平行的时候,需要在Union-subclass标签中,添加extends属性,里面的值是父类的全路径名称。
子类的其它属性,像普通类一样,定义在Union-subclass标签的内部。这个时候,虽然在union-subclass里面定义的只有子类的属性,但是因为它继承了父类,所以,
不需要定义其它的属性,在映射到数据库表的时候,依然包含了父类的所有属性的映射字段。

!!!特别注意:在保存对象的时候,id不能重复(所以不能用自增方法生成主键)

2、存储和多态查询参见策略一:每棵类继承树对应一张表



Hibernate继承映射的第一种策略:每棵类继承树对应一张表

1、理解如何映射
因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。
这种机制就是,在表中添加一个字段,用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤:
父类用普通的<class>标签定义
在父类中定义一个discriminator,即指定这个区分的字段的名称和类型
如:<discriminator column=”XXX” type=”string”/>
子类使用<subclass>标签定义,在定义subclass的时候,需要注意如下几点:
Subclass标签的name属性是子类的全路径名
在Subclass标签中,用discriminator-value属性来标明本子类的discriminator字段(用来区分不同类的字段)的值
Subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),也可以与class标签平行。
当subclass标签的定义与class标签平行的时候,需要在subclass标签中,添加extends属性,里面的值是父类的全路径名称。
子类的其它属性,像普通类一样,定义在subclass标签的内部。

2、理解如何存储
在存储数据的时候,hibernate会自动将鉴别字段的值插入到数据库中,在加载数据的时候,
hibernate便能根据这个鉴别字段正确的加载对象

3、理解何为多态查询,即hibernate能够加载数据的时候自动鉴别其真正的类型

多态get(),支持
多态load(),设置Lazy=“false”时,支持
多态查询,支持



Hibernate继承映射的第一种策略:每个类对应一张表

1、如何映射
这种策略是使用joined-subclass标签来定义子类的。父类、子类,每个类都对应一张数据库表。
在父类对应的数据库表中,实际上会存储所有的记录,包括父类和子类的记录;在子类对应的数据库表中,
这个表只定义了子类中所特有的属性映射的字段。子类与父类,通过相同的主键值来关联。实现这种策略的时候,有如下步骤:
父类用普通的<class>标签定义即可
父类不再需要定义discriminator字段
子类用<joined-subclass>标签定义,在定义joined-subclass的时候,需要注意如下几点:
Joined-subclass标签的name属性是子类的全路径名
Joined-subclass标签需要包含一个key标签,这个标签指定了子类和父类之间是通过哪个字段来关联的。
如:<key column=”PARENT_KEY_ID”/>,这里的column,实际上就是父类的主键对应的映射字段名称。
Joined-subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),
也可以与class标签平行。 当Joined-subclass标签的定义与class标签平行的时候,需要在Joined-subclass标签中,添加extends属性,里面的值是父类的全路径名称。
子类的其它属性,像普通类一样,定义在joined-subclass标签的内部。

2、存储和多态查询参见策略一:每棵类继承树对应一张表

分享到:
评论

相关推荐

    Hibernate Reference官方文档实践日记一

    【标题】:“Hibernate Reference官方文档实践日记一” 这篇文章的作者显然正在探索并实践Hibernate ORM框架,这是Java开发中用于数据库操作的重要工具。Hibernate是开源的,它提供了对象关系映射(ORM)解决方案,...

    尚学堂_Hibernate3.3.2_项目源码

    尚学堂的Hibernate3.3.2项目源码提供了深入学习和实践Hibernate的机会,让我们一起深入探讨这个项目中的关键知识点。 首先,我们来看看Hibernate的核心概念。在Hibernate中,实体类代表数据库中的表,实体类的每个...

    电子宠物(struts+hibernate)

    这一功能可能运用到JSP(JavaServer Pages)技术来构建前端界面,Struts负责处理用户提交的请求,并通过Hibernate更新日记信息到数据库。 4. **训练宠物**:系统允许用户通过喂食、游戏和讲故事等方式与宠物互动,...

    spring2.5+struts2+hibernate3.2=ssh项目框架源码

    这个项目的源码提供了使用Spring 2.5、Struts 2和Hibernate 3.2构建应用程序的实例,这对于学习和理解SSH框架的整合及实际应用有着重要的参考价值。 Spring是一个全面的后端应用程序框架,它提供了依赖注入(DI)和...

    jBPM 小白的学习日记

    ### jBPM小白的学习日记——深入理解流程定义与部署 #### 一、jBPM简介 jBPM(Java Business Process Model)是一个开源的工作流引擎,由JBoss维护,广泛应用于业务流程管理(BPM)场景。它提供了一种简单而强大的...

    学习ssh框架日记

    SSH框架,即Struts2、Spring和Hibernate的组合,是Java企业级开发中的常用技术栈。下面将分别对这三个框架的核心机制进行详细介绍。 **Struts2机制** 1. **核心控制器 FilterDispatcher**:Struts2的基础,负责...

    计算机实习日记15篇

    这篇日记记录了作者在计算机实习的经历,涵盖了jsp开发、Tomcat服务器、SQL Server2000数据库、Struts、Spring、Hibernate框架等多个知识点。 关于JSP开发 JSP(Java Server Pages)是一种基于Java的服务器端脚本...

    个人知识管理系统 Struts2.0 + Spring + Hibernate

    Struts2.0 + Spring + Hibernate + DWR 对于三大框架目前还在学习阶段,做得不好的地方欢迎来mail指正yukiceo@126.com,或http://blog.csdn.net/yukiceo 每天面对大量的知识,时间一长,容易造成某些知识点的生疏...

    基于java的个人日记本系统毕业设计(源代码+数据库+部署视频).zip

    这是一个基于Java技术实现的...总的来说,这个基于Java的个人日记本系统毕业设计项目是一个全面的学习资源,涵盖了从编程语言到数据库设计,再到Web应用开发和部署的多个重要方面,对于提升学生的综合技能非常有帮助。

    实习日记34篇(我的实习日记)

    这篇实习日记记录了作者在实习期间的所见所闻,包括了对 Java 编程的学习和实践经验。以下是从这篇日记中提炼出来的知识点: 1. 实习第一天的感受:作者在实习的第一天感受到了一些不适应,主要是因为从学校的作息...

    网页制作实习日记.pdf

    2. **Java编程和开源框架**:作者提到了Struts、Spring和Hibernate这三个Java开源框架,它们分别是MVC(模型-视图-控制器)架构、依赖注入和对象关系映射的解决方案。这些框架简化了企业级Web应用的开发,但理解和...

    SSH日记程序整合

    在这个场景中,"SSH日记程序整合"可能是指通过Spring来管理日志记录的组件,如Log4j或Logback,Struts可能用来处理日记的显示和编辑操作,而Hibernate可能用于将日记数据持久化到数据库。KindEditor则是一个常见的...

    大学生计算机实习日记2篇.pdf

    在接下来的日记中,实习者开始学习开源框架,如Struts(Trut)、Spring和Hibernate,它们分别对应表示层、业务逻辑层和持久层。这些框架在Java Web开发中广泛应用,但同时也带来了版本兼容性和学习曲线陡峭的问题。...

    计算机java实习日记 (2).pdf

    【计算机Java实习日记】系列记录了一位实习生在Java开发岗位上的经历和学习心得。这篇日记主要涉及了Java Web开发中的关键技术,包括Tomcat服务器、Java编程、SQL Server数据库以及Struts、Spring和Hibernate三大...

    计算机专业实习日记(2).pdf

    这篇实习日记记录了一个大学生在计算机专业实习过程中的学习与体验,主要涉及了互联网行业的网站管理和网页设计,以及编程和软件框架的使用。 在实习过程中,实习生接触了网站后台数据库的管理和数据录入,了解到...

    程序员实习日记.doc.docx

    在实习日记中,可能会提及到的技术栈如"Struts+Spring+Hibernate",这是一个经典的Java Web开发框架组合。Struts是MVC(Model-View-Controller)架构模式的一个实现,用于处理用户请求并控制应用程序流程;Spring则...

    计算机实习日记 (2).docx

    在计算机实习的过程中,实习生通常会遇到各种技术和问题,这篇日记记录了实习生在使用Java和相关技术进行网站开发时的一些挑战和学习心得。首先,日记提到了一个常见的问题,即使用Tomcat作为服务器运行Java网站时...

    个人信息管理系统Struts2 spring hibernate dwr

    Struts2.0 + Spring + Hibernate + DWR 对于三大框架目前还在学习阶段,做得不好的地方欢迎来mail指正yukiceo@126.com,或http://blog.csdn.net/yukiceo 每天面对大量的知识,时间一长,容易造成某些知识点的生疏...

    个人知识管理系统 Struts2 + Spring + Hibernate

    Struts2.0 + Spring + Hibernate + DWR 对于三大框架目前还在学习阶段,做得不好的地方欢迎来mail指正yukiceo@126.com,或http://blog.csdn.net/yukiceo 每天面对大量的知识,时间一长,容易造成某些知识点的生疏...

    计算机毕业设计-个人日记本系统

    2. **MVC设计模式**:个人日记本系统的架构通常采用Model-View-Controller(MVC)模式,这种模式能够有效地分离业务逻辑、数据模型和用户界面,提高代码的可维护性和可扩展性。 3. **数据库管理**:系统需要存储...

Global site tag (gtag.js) - Google Analytics