这种映射方式只需为继承关系树的Employee根类创建一张表EMPLOYEES。如图14-4所示,在EMPLOYEES表中不仅提供和 Employee类的属性对应的字段,还要提供和它的两个子类的所有属型对应的字段,此外,EMPLOYEES表中需要额外加入一个字符串类型的 EMPLOYEE_TYPE字段,用于区分Employee的具体类型。
图14-4 继承关系树的根类对应一个表
Company类和Employee类有相应的映射文件,而HourlyEmployee类和SalariedEmployee类没有相应的映射文件。图14-5显示了持久化类、映射文件和数据库表之间的对应关系。
图14-5 持久化类、映射文件和数据库表之间的对应关系
14.2.1 创建映射文件
从Company类到Employee类是多态关联,由于关系数据模型描述了Employee类和它的两个子类的继承关系,因此可以映射Company 类的employees集合。例程14-5是Company.hbm.xml文件的代码,该文件不仅映射了Company类的id和name属性,还映射 了它的employees集合。
例程14-5 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" />
<set
name="employees"
inverse="true"
lazy="true" >
<key column="COMPANY_ID" />
<one-to-many class="mypack.Employee" />
</set>
</class>
</hibernate-mapping>
Employee.hbm.xml文件用于把Employee类映射到EMPLOYEES表,在这个映射文件中,除了需要映射Employee类本身的属性,还需要在元素中映射两个子类的属性。例程14-6是Employee.hbm.xml文件的代码。
例程14-6 Employee.hbm.xml
<hibernate-mapping >
<class name="mypack.Employee" table="EMPLOYEES">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<discriminator column="EMPLOYEE_TYPE" type="string" />
<property name="name" type="string" column="NAME" />
<many-to-one
name="company"
column="COMPANY_ID"
class="mypack.Company"
/>
<subclass name="mypack.HourlyEmployee" discriminator-value="HE" >
<property name="rate" column="RATE" type="double" />
</subclass>
<subclass name="mypack.SalariedEmployee" discriminator-value="SE" >
<property name="salary" column="SALARY" type="double" />
</subclass>
</class>
</hibernate-mapping>
在Employee.hbm.xml文件中,元素指定EMPLOYEES表中用于区分Employee类型的字段为EMPLOYEE_TYPE,两个元 素用于映射HourlyEmployee类和SalariedEmployee类,元素的discriminator-value属性指定 EMPLOYEE_TYPE字段的取值。EMPLOYEES表中有以下记录:
分享到:
相关推荐
《精通Hibernate 3.0(第三版)》是Java开发者深入理解对象持久化技术的一本经典教程。本书全面覆盖了Hibernate 3.0的核心概念、API以及最佳实践,旨在帮助读者掌握这一强大的ORM(对象关系映射)框架,提升开发效率...
9. **多态和继承映射**:讲解如何处理类的继承关系,实现多态查询,包括单表继承、联合继承和表格派生。 10. **级联操作与代理**:阐述级联属性的使用,如何实现对象间的联动操作,以及Hibernate的动态代理机制。 ...
接着,孙卫琴深入探讨了Hibernate的对象关系映射(ORM)机制,包括实体类的定义、属性注解、主键生成策略、关联映射(一对一、一对多、多对多)以及继承映射等。这些内容让读者能够将Java对象与数据库表进行无缝对接...
第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承...
这个压缩包包含了两份关键文件:《Hibernate参考文档.chm》和《精通Hibernate:Java对象持久化技术详解.pdf》,旨在帮助开发者深入理解和熟练运用Hibernate这一强大的ORM(对象关系映射)工具。 一、Hibernate简介 ...
《精通Hibernate源码Chapter4:Java对象持久化技术详解》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。深入理解Hibernate的源码,不仅可以帮助开发者提高开发效率,还...
《精通Hibernate孙卫琴》是Java开发者们广泛阅读的一本技术专著,由知名Java专家孙卫琴撰写。这本书深入浅出地介绍了Hibernate这一强大的对象关系映射(ORM)框架,帮助开发者理解和掌握如何在Java应用程序中高效地...
《精通Hibernate:Java对象持久化技术详解》一书聚焦于Java开发中的对象持久化技术,主要围绕Hibernate这一流行ORM框架进行深入探讨。Hibernate是Java世界里的重要工具,它简化了数据库操作,使得开发者可以更加专注...
2. **Chapter 7**:可能涉及对象关系映射(ORM)的细节,包括实体类的定义、属性注解、继承关系的处理等。这是Hibernate的核心功能,它允许我们将Java对象直接映射到数据库表。 3. **Chapter 14**:可能是关于HQL...
《精通Hibernate(Part 4)》是孙卫琴所著的一系列关于Hibernate框架的专业书籍之一。该系列旨在帮助读者全面掌握Hibernate框架在Java 2 Platform, Enterprise Edition (J2EE)环境下的应用技巧,提升开发效率。本书...
本书《精通Hibernate》由孙卫琴编写,分为四个部分,旨在帮助读者全面掌握Hibernate框架,并将其应用于实际项目中。 #### Part 2 内容概览 第二部分作为本书的关键章节之一,进一步深入探讨了Hibernate的核心概念...
首先,Hibernate作为Java领域中最受欢迎的对象关系映射(ORM)框架之一,它允许开发者用面向对象的方式处理数据库操作,避免了SQL语言的直接操作,降低了开发难度。书中会详细介绍Hibernate的核心组件,如...
精通Hibernate:Java对象持久化技术详解》这本书深入浅出地介绍了Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate是Java开发人员在处理数据库操作时常用的工具,它极大地简化了数据库与Java对象之间的...