一、Hibernate的继承映射包含了三种基本的继承映射策略:
- 每个类分层结构一张表
- 每个子类映射成一张表
- 每个具体类映射成一张表
二、假设我们有三个类Animal,Pig,Bird
public class Pig extends Animal {
private int weight;
//setter and getter
}
public class Bird extends Animal {
private int height;
//setter and getter
}
- 每个类分层结构一张表
* 父类用普通的<class>标签定义。
* 在父类中定义一个discriminator,即指定这个区分的字段的名称和类型
如:<discriminator column=”XXX” type=”string”/>
* 子类使用<subclass>标签定义。
* 采用这种策略只需要一张表即可。它有一个很大的限制:要求那些由子类定义的字段不能有非空(NOT NULL)约束。
具体配置:
Animal.hbm.xml:
<class name="Animal" table="t_animal" lazy="false">
<id name="id">
<generator class="native"/>
</id>
<discriminator column="type" type="string"/>
<property name="name"/>
<property name="sex"/>
<subclass name="Pig" discriminator-value="P">
<property name="weight"/>
</subclass>
<subclass name="Bird" discriminator-value="B">
<property name="height"/>
</subclass>
</class>
2.每个子类映射成一张表
* 父类用普通的<class>标签定义。
* 父类不再需要定义discriminator字段。
* 子类用<joined-subclass>标签定义。
具体配置:
extends.hbm.xml
<class name="Animal" table="t_animal">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="sex"/>
<joined-subclass name="Pig" table="t_pig">
<key column="pid"/>
<property name="weight"/>
</joined-subclass>
<joined-subclass name="Bird" table="t_bird">
<key column="bid"/>
<property name="height"/>
</joined-subclass>
</class>
3.每个具体类映射成一张表
* 父类用普通<class>标签定义。
* 子类用<union-subclass>标签定义。
* 注意:在保存对象的时候id是不能重复的(不能使用自增生成主键)。
具体配置:
<class name="Animal" abstract="true">
<id name="id">
<generator class="assigned"/>
</id>
<property name="name"/>
<property name="sex"/>
<union-subclass name="Pig" table="t_pig">
<property name="weight"/>
</union-subclass>
<union-subclass name="Bird" table="t_bird">
<property name="height"/>
</union-subclass>
</class>
分享到:
相关推荐
**hibernate学习笔记概述** Hibernate 是一个强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。这篇学习笔记将深入探讨Hibernate的核心概念、主要功能和...
总的来说,这篇 Hibernate 学习笔记涵盖了关联关系的多种类型和映射方法,以及查询排序、组件映射和继承映射等核心概念,为理解并熟练运用 Hibernate 提供了坚实的基础。通过实际编码和理解这些示例,开发者可以更...
### Hibernate 学习笔记4 —— 多对多关系与多态映射 #### 多对多关系 在 Hibernate 中处理多对多关系时,通常采用一种称为“连接表”或“关联表”的方法来实现两个实体之间的多对多关联。这种设计方式较为常见且...
【一、O/R Mapping】 O/R Mapping,即对象关系映射,是将对象模型与关系数据库之间进行映射的技术。在Hibernate中,O/R Mapping允许开发者以面向对象的方式...学习和掌握Hibernate有助于提升Java应用的数据管理能力。
在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...
- **继承映射**:支持单表继承、联合子类继承等多种模式。 - **组件映射**:将复杂类型的属性映射到数据库表中的多个列上。 ### 锁机制 为了保证并发环境下的数据一致性,Hibernate提供了两种锁机制: - **悲观锁...
【hibernate框架开发2016版视频 四天学习笔记完整版】 在软件开发领域,特别是Java Web开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者可以更专注于业务逻辑而不是...
【Hibernate学习笔记(1-13)】是传智播客李勇的教程,涵盖了Hibernate框架的基础到进阶内容。Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即...
《Hibernate Annotation 学习笔记》 在Java的持久化框架中,Hibernate以其强大的功能和易用性成为开发者首选之一。而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML...
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了轻量级的对象封装...总的来说,Hibernate学习笔记涵盖了从基础到高级的多个方面,对于希望掌握Hibernate的开发者来说,是一份相当全面的学习资料。
这篇详细的Hibernate学习笔记,主要聚焦于使用注解(Annotation)的方式进行配置,这是自Hibernate 3.0版本以来推荐的配置方式,相比XML配置,注解更加简洁且易于维护。 在开始深入学习之前,我们先了解一下...
3. **继承映射:** Hibernate 支持单表继承、联合继承和表格-per-class继承策略。 **四、操作数据库** 1. **CRUD 操作:** Hibernate 提供了简便的方法进行创建(save()或persist())、读取(get()或load())、更新...
本笔记主要关注使用XML配置的Hibernate项目,而非注解方式,涵盖了从项目创建到实体类映射,再到CRUD操作和一对一关联映射的基本步骤。 一、第一个Hibernate项目 1. 创建Java项目,这是所有Java应用的基础。 2. ...
【hibernate4框架学习笔记】 Hibernate是一款强大的ORM(Object-Relational Mapping)框架,它在Java开发中扮演着至关重要的角色,通过提供对象与数据库之间的映射,解决了对象模型和关系模型之间的“阻抗不匹配”...