`
dreamer_0924
  • 浏览: 180249 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

精通Hibernate之映射继承关系二

阅读更多
把每个具体类映射到一张表是最简单的映射方式。如图14-2所示,在关系数据模型中只需定义COMPANIES、HOURLY_EMPLOYEES和 SALARIED_EMPLOYEES表。为了叙述的方便,下文把HOURLY_EMPLOYEES表简称为HE表,把 SALARIED_EMPLOYEES表简称为SE表。

HourlyEmployee类和HE表对应, HourlyEmployee类本身的rate属性,以及从Employee类中继承的id属性和name属性,在HE表中都有对应的字段。此外, HourlyEmployee类继承了Employee类与Company类的关联关系,与此对应,在HE表中定义了参照COMPANIES表的 COMPANY_ID外键。

SalariedEmployee类和SE表对应,SalariedEmployee类本身的 salary属性,以及从Employee类中继承的id属性和name属性,在SE表中都有对应的字段。此外,SalariedEmployee类继承 了Employee类与Company类的关联关系,与此对应,在SE表中定义了参照COMPANIES表的COMPANY_ID外键。

Company类、HourlyEmployee类和SalariedEmployee类都有相应的映射文件,而Employee类没有相应的映射文件。图14-3显示了持久化类、映射文件和数据库表之间的对应关系。
 
图14-2 每个具体类对应一个表

图14-3 持久化类、映射文件和数据库表之间的对应关系

如果Employee类不是抽象类,即Employee类本身也能被实例化,那么还需要为Employee类创建对应的EMPLOYEES表,此时HE 表和SE表的结构仍然和图14-2中所示的一样。这意味着在EMPLOYEES表、HE表和SE表中都定义了相同的NAME字段以及参照 COMPANIES表的外键COMPANY_ID。另外,还需为Employee类创建单独的Employee.hbm.xml文件。

14.1.1 创建映射文件

从Company类到Employee类是多态关联,但是由于关系数据模型没有描述Employee类和它的两个子类的继承关系,因此无法映射 Company类的employees集合。例程14-1是Company.hbm.xml文件的代码,该文件仅仅映射了Company类的id和 name属性。

例程14-1 Company.hbm.xml

<hibernate-mapping >
<class name="mypack.Company" table="COMPANIES" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>

<property name="name" type="string" column="NAME" />

</class>
</hibernate-mapping>

HourlyEmployee.hbm.xml文件用于把HourlyEmployee类映射到HE表,在这个映射文件中,除了需要映射 HourlyEmployee类本身的rate属性,还需要映射从Employee类中继承的name属性,此外还要映射从Employee类中继承的与 Company类的关联关系。例程14-2是HourlyEmployee.hbm.xml文件的代码。

例程14-2 HourlyEmployee.hbm.xml

<hibernate-mapping >
<class name="mypack.HourlyEmployee" table="HOURLY_EMPLOYEES">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>

<property name="name" type="string" column="NAME" />
<property name="rate" column="RATE" type="double" />

<many-to-one
name="company"
column="COMPANY_ID"
class="mypack.Company"
/>
</class>
</hibernate-mapping>
SalariedEmployee.hbm.xml文件用于把SalariedEmployee类映射到SE表,在这个映射文件中,除了需要映射 SalariedEmployee类本身的salary属性,还需要映射从Employee类中继承的name属性,此外还要映射从Employee类中 继承的与Company类的关联关系。例程14-3是SalariedEmployee.hbm.xml文件的代码。

例程14-3 SalariedEmployee.hbm.xml
分享到:
评论

相关推荐

    精通Hibernate:Java持久化对象技术详解[第二版]

    《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件  12.1.2 操纵持久化对象  12.2 继承关系树的根类对应一个表  12.2.1 创建映射文件  12.2.2 操纵持久化对象  12.3 继承...

    精通Hibernate(孙卫琴)

    接着,孙卫琴深入探讨了Hibernate的对象关系映射(ORM)机制,包括实体类的定义、属性注解、主键生成策略、关联映射(一对一、一对多、多对多)以及继承映射等。这些内容让读者能够将Java对象与数据库表进行无缝对接...

    精通hibernate3.0(第三版).rar

    《精通Hibernate 3.0(第三版)》是Java开发者深入理解对象持久化技术的一本经典教程。本书全面覆盖了Hibernate 3.0的核心概念、API以及最佳实践,旨在帮助读者掌握这一强大的ORM(对象关系映射)框架,提升开发效率...

    精通Hibernate与参考文档

    这个压缩包包含了两份关键文件:《Hibernate参考文档.chm》和《精通Hibernate:Java对象持久化技术详解.pdf》,旨在帮助开发者深入理解和熟练运用Hibernate这一强大的ORM(对象关系映射)工具。 一、Hibernate简介 ...

    精通Hibernate孙卫琴 pdf

    《精通Hibernate孙卫琴》是Java开发者们广泛阅读的一本技术专著,由知名Java专家孙卫琴撰写。这本书深入浅出地介绍了Hibernate这一强大的对象关系映射(ORM)框架,帮助开发者理解和掌握如何在Java应用程序中高效地...

    精通Hibernate:Java对象持久化技术详解

    《精通Hibernate:Java对象持久化技术详解》一书聚焦于Java开发中的对象持久化技术,主要围绕Hibernate这一流行ORM框架进行深入探讨。Hibernate是Java世界里的重要工具,它简化了数据库操作,使得开发者可以更加专注...

    精通hibernate(part 2)共分4个part (孙卫琴)

    ### 精通Hibernate(Part 2):深入探索Hibernate框架在J2EE中的应用 #### Hibernate概述 Hibernate是一款开放源代码的对象关系映射(Object Relational Mapping,ORM)框架,它对JDBC进行了非常轻量级的对象封装...

    精通Hibernate源代码

    2. **Chapter 7**:可能涉及对象关系映射(ORM)的细节,包括实体类的定义、属性注解、继承关系的处理等。这是Hibernate的核心功能,它允许我们将Java对象直接映射到数据库表。 3. **Chapter 14**:可能是关于HQL...

    精通Hibernate图书欣赏及PDF阅读器

    压缩包中的“Foxit Reader3.0.2.091506.exe”是福昕PDF阅读器的安装程序,用于打开和阅读“精通hibernate.pdf”这本书的电子版。福昕阅读器是一款轻便且功能丰富的PDF阅读软件,支持查看、打印、注释等多种功能,...

    精通hibernate源码ch4

    Hibernate遵循Java Persistence API(JPA)标准,提供了丰富的映射机制,包括一对一、一对多、多对一、多对多等各种关系映射,以及继承映射、复合主键等特性,使得对象关系的映射变得简单直观。 总结,精通...

    孙卫琴.精通Hibernate.zip

    精通Hibernate:Java对象持久化技术详解》这本书深入浅出地介绍了Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate是Java开发人员在处理数据库操作时常用的工具,它极大地简化了数据库与Java对象之间的...

    孙卫琴版的精通hibernate

    接着,她深入讲解了Hibernate的对象模型,包括实体类、持久化属性、继承关系、多对一、一对一、一对多和多对多等关联映射的实现方式。 此外,书中还详细阐述了Hibernate的主要API,如Session、Transaction、Query和...

Global site tag (gtag.js) - Google Analytics