在域模型中,类与类之间除了关联关系和聚集关系,还可以存在继承关系,在图14-1所示的域模型中,Company类和Employee类之间为一对多的 双向关联关系(假定不允许雇员同时在多个公司兼职),Employee类为抽象类,因此它不能被实例化,它有两个具体的子类: HourlyEmployee类和SalariedEmployee类。由于Java只允许一个类最多有一个直接的父类,因此Employee类、 HourlyEmployee类和SalariedEmployee类构成了一棵继承关系树。
图14-1 包含继承关系的域模型
在面向对象的范畴中,还存在多态的概念,多态建立在继承关系的基础上。简单地理解,多态是指当一个Java应用变量被声明为Employee类时,这个 变量实际上既可以引用HourlyEmployee类的实例,也可以引用SalariedEmployee类的实例。以下这段程序代码就体现了多态:
List employees= businessService.findAllEmployees();
Iterator it=employees.iterator();
while(it.hasNext()){
Employee e=(Employee)it.next();
if(e instanceof HourlyEmployee){
System.out.println(e.getName()+" "+((HourlyEmployee)e).getRate());
}else
System.out.println(e.getName()+" "+((SalariedEmployee)e).getSalary());
}
BusinessService类的findAllEmployees()方法通过Hibernate API从数据库中检索出所有Employee对象。findAllEmployees()方法返回的集合既包含HourlyEmployee类的实例,也 包含SalariedEmployee类的实例,这种查询被称为多态查询。以上程序中变量e被声明为Employee类型,它实际上既可能引用 HourlyEmployee类的实例,也可能引用SalariedEmployee类的实例。
此外,从Company类到 Employee类为多态关联,因为Company类的employees集合中可以包含HourlyEmployee类和 SalariedEmployee类的实例。从Employee类到Company类不是多态关联,因为Employee类的company属性只会引用 Company类本身的实例。数据库表之间并不存在继承关系,那么如何把域模型的继承关系映射到关系数据模型中呢?本章将介绍以下三种映射方式:
继承关系树的每个具体类对应一个表:关系数据模型完全不支持域模型中的继承关系和多态。
继承关系树的根类对应一个表:对关系数据模型进行非常规设计,在数据库表中加入额外的区分子类型的字段。通过这种方式,可以使关系数据模型支持继承关系和多态。
继承关系树的每个类对应一个表:在关系数据模型中用外键参照关系来表示继承关系。
提示:具体类是指非抽象的类,具体类可以被实例化。HourlyEmployee类和SalariedEmployee类就是具体类。
以上每种映射方式都有利有弊,本章除了介绍每种映射方式的具体步骤,还介绍了它们的适用范围。
分享到:
相关推荐
《精通Hibernate 3.0(第三版)》是Java开发者深入理解对象持久化技术的一本经典教程。本书全面覆盖了Hibernate 3.0的核心概念、API以及最佳实践,旨在帮助读者掌握这一强大的ORM(对象关系映射)框架,提升开发效率...
《精通Hibernate:Java持久化对象技术详解[第二版]》是一部深入探讨Hibernate框架的专业书籍,旨在帮助Java开发者熟练掌握和运用这一强大的ORM(Object-Relational Mapping)工具。Hibernate是Java开发领域中广泛...
接着,孙卫琴深入探讨了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孙卫琴1”可能是本书的第一部分或第一章,包含了基础概念和初步的使用教程,为后续章节的学习打下坚实基础。建议读者结合源代码和实际操作,以加深理解和应用。 总的来说,《精通...
《精通Hibernate:Java对象持久化技术详解》一书聚焦于Java开发中的对象持久化技术,主要围绕Hibernate这一流行ORM框架进行深入探讨。Hibernate是Java世界里的重要工具,它简化了数据库操作,使得开发者可以更加专注...
2. **Chapter 7**:可能涉及对象关系映射(ORM)的细节,包括实体类的定义、属性注解、继承关系的处理等。这是Hibernate的核心功能,它允许我们将Java对象直接映射到数据库表。 3. **Chapter 14**:可能是关于HQL...
接着,她深入讲解了Hibernate的对象模型,包括实体类、持久化属性、继承关系、多对一、一对一、一对多和多对多等关联映射的实现方式。 此外,书中还详细阐述了Hibernate的主要API,如Session、Transaction、Query和...
Hibernate遵循Java Persistence API(JPA)标准,提供了丰富的映射机制,包括一对一、一对多、多对一、多对多等各种关系映射,以及继承映射、复合主键等特性,使得对象关系的映射变得简单直观。 总结,精通...
首先,Hibernate作为Java领域中最受欢迎的对象关系映射(ORM)框架之一,它允许开发者用面向对象的方式处理数据库操作,避免了SQL语言的直接操作,降低了开发难度。书中会详细介绍Hibernate的核心组件,如...
精通Hibernate:Java对象持久化技术详解》这本书深入浅出地介绍了Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate是Java开发人员在处理数据库操作时常用的工具,它极大地简化了数据库与Java对象之间的...
总之,《精通Hibernate》(Part 2)是一本非常适合想要深入了解Hibernate框架及其在J2EE项目中应用的开发者的书籍。它不仅涵盖了Hibernate的基础知识,还包括了许多高级特性,对于提升开发者的技能水平有着重要作用...