`
vager
  • 浏览: 5716 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate 学习笔记之继承映射

阅读更多

一、Hibernate的继承映射包含了三种基本的继承映射策略:

  1. 每个类分层结构一张表
  2. 每个子类映射成一张表
  3. 每个具体类映射成一张表

二、假设我们有三个类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
}
  1.  每个类分层结构一张表

        * 父类用普通的<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学习笔记概述** Hibernate 是一个强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。这篇学习笔记将深入探讨Hibernate的核心概念、主要功能和...

    Hibernate学习笔记_songjignhao_1

    总的来说,这篇 Hibernate 学习笔记涵盖了关联关系的多种类型和映射方法,以及查询排序、组件映射和继承映射等核心概念,为理解并熟练运用 Hibernate 提供了坚实的基础。通过实际编码和理解这些示例,开发者可以更...

    hibernate 学习笔记4

    ### Hibernate 学习笔记4 —— 多对多关系与多态映射 #### 多对多关系 在 Hibernate 中处理多对多关系时,通常采用一种称为“连接表”或“关联表”的方法来实现两个实体之间的多对多关联。这种设计方式较为常见且...

    Hibernate3 学习笔记.ppt

    【一、O/R Mapping】 O/R Mapping,即对象关系映射,是将对象模型与关系数据库之间进行映射的技术。在Hibernate中,O/R Mapping允许开发者以面向对象的方式...学习和掌握Hibernate有助于提升Java应用的数据管理能力。

    2023年Java相关课程系列笔记之十四Hibernate学习笔记.doc

    在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...

    hibernate 学习笔记总结

    - **继承映射**:支持单表继承、联合子类继承等多种模式。 - **组件映射**:将复杂类型的属性映射到数据库表中的多个列上。 ### 锁机制 为了保证并发环境下的数据一致性,Hibernate提供了两种锁机制: - **悲观锁...

    hibernate框架开发2016版视频 四天学习笔记完整版

    【hibernate框架开发2016版视频 四天学习笔记完整版】 在软件开发领域,特别是Java Web开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者可以更专注于业务逻辑而不是...

    Hibernate学习笔记(1-13)

    【Hibernate学习笔记(1-13)】是传智播客李勇的教程,涵盖了Hibernate框架的基础到进阶内容。Hibernate是一个流行的ORM(对象关系映射)框架,它旨在解决Java面向对象编程与关系型数据库之间的模型不匹配问题,即...

    Hibernate Annotation 学习笔记

    《Hibernate Annotation 学习笔记》 在Java的持久化框架中,Hibernate以其强大的功能和易用性成为开发者首选之一。而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML...

    Hibernate学习笔记

    Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了轻量级的对象封装...总的来说,Hibernate学习笔记涵盖了从基础到高级的多个方面,对于希望掌握Hibernate的开发者来说,是一份相当全面的学习资料。

    Hibernate—详细学习笔记

    这篇详细的Hibernate学习笔记,主要聚焦于使用注解(Annotation)的方式进行配置,这是自Hibernate 3.0版本以来推荐的配置方式,相比XML配置,注解更加简洁且易于维护。 在开始深入学习之前,我们先了解一下...

    Hibernate 4 学习笔记

    3. **继承映射:** Hibernate 支持单表继承、联合继承和表格-per-class继承策略。 **四、操作数据库** 1. **CRUD 操作:** Hibernate 提供了简便的方法进行创建(save()或persist())、读取(get()或load())、更新...

    王勇Hibernate自学笔记

    本笔记主要关注使用XML配置的Hibernate项目,而非注解方式,涵盖了从项目创建到实体类映射,再到CRUD操作和一对一关联映射的基本步骤。 一、第一个Hibernate项目 1. 创建Java项目,这是所有Java应用的基础。 2. ...

    hibernate4框架学习笔记

    【hibernate4框架学习笔记】 Hibernate是一款强大的ORM(Object-Relational Mapping)框架,它在Java开发中扮演着至关重要的角色,通过提供对象与数据库之间的映射,解决了对象模型和关系模型之间的“阻抗不匹配”...

Global site tag (gtag.js) - Google Analytics