`

2009-04-16 | Hibernate关联映射 (继承映射)

阅读更多

1.每棵继承树映射成一张表

 

t_animal

 

id

name

sex

weight

height

type

1

Pig-1

F

100

 

P

2

Bird-1

M

 

50

B

 

 

<hibernate-mapping package="com.bjsxt.hibernate">
    <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>
</hibernate-mapping>

 

 

 

1、理解如何映射


  因为类继承树肯定是对应多个类,要把多个类的信息存放在一张表中,必须有某种机制来区分哪些记录是属于哪个类的。


  这种机制就是,在表中添加一个字段,用这个字段的值来进行区分。用hibernate实现这种策略的时候,有如下步骤:


  * 父类用普通的<class>标签定义


  * 在父类中定义一个discriminator,即指定这个区分的字段的名称和类型,如:
      <discriminator column=”XXX” type=”string”/>


  * 子类使用<subclass>标签定义,在定义subclass的时候,需要注意如下几点:
     Subclass标签的name属性是子类的全路径名
     在Subclass标签中,用discriminator-value属性来标明本子类的discriminator字段(用来区分不同类的字段)
     的值Subclass标签,既可以被class标签所包含(这种包含关系正是表明了类之间的继承关系),也可以与class标
     签平行。 当subclass标签的定义与class标签平行的时候,需要在subclass标签中,添加extends属性,里面的值
     是父类的全路径名称。子类的其它属性,像普通类一样,定义在subclass标签的内部。

 

 

2、理解如何存储


 存储的时候hibernate会自动将鉴别字段值插入到数据库中,在加载数据的时候,hibernate能根据这个鉴别值
 正确的加载对象
 
 多态查询:在hibernate加载数据的时候能鉴别出正真的类型(instanceOf)

 

 get支持多态查询,hql支持多态查询 


 load只有在lazy=false,才支持多态查询 

 

分享到:
评论

相关推荐

    hibernate关联映射实例

    本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...

    Hibernate数据关联映射与继承策略

    通过理解并熟练掌握 Hibernate 的数据关联映射和继承策略,开发者可以更高效地管理对象与数据库之间的关系,减少手写 SQL 的需求,提高开发效率和代码可维护性。同时,这些知识也是面试和项目开发中必不可少的部分。

    用Hibernate映射继承关系

    ### 用Hibernate映射继承关系 #### 14.1 继承关系树的每个具体类对应一个表 在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/...

    hibernate继承映射.rar

    《Hibernate继承映射详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。在实际项目中,我们常常会遇到类的继承关系,而Hibernate提供了强大的支持来处理这种继承关系的...

    hibernate常用关联映射源码(很实用)

    该资源包括了hibernate开发中的常见关联映射的源代码,其中包括:one2one,one2many,many2many等,还有继承映射,inverse,fetch,cascade关键字的应用等,对初学者来说,是很实用的,难度适中,很好理解

    Hibernate继承映射(annotation)

    **标题:“Hibernate继承映射(Annotation)详解”** 在Java持久化框架Hibernate中,继承映射是一种关键特性,它允许开发者将对象模型的继承结构映射到数据库的表结构。在传统的面向对象编程中,继承是实现代码复用和...

    Hibernate教程17_继承映射

    本教程主要探讨的是Hibernate中的“继承映射”特性,这是一项关键功能,它允许我们将复杂的类继承结构映射到数据库表中。通过继承映射,我们可以有效地管理和组织数据,提高代码的复用性和可维护性。 在Hibernate中...

    Hibernate继承关系映射.pdf

    本文档主要聚焦于Hibernate框架下继承关系的映射,通过三种不同的策略——隐式继承映射、单表映射和关联表映射,来实现类的继承结构在数据库中的映射。 ### 隐式继承映射 #### 定义与配置 隐式继承映射也称为“表...

    常用 Hibernate 映射配置说明.doc

    通过`set`、`list`、`map`等集合节点实现一对多的关联映射,其中`inverse`属性用于控制关联关系的维护方。 #### 7. 多对一关联 `many-to-one`节点表示多对一的关系,通常涉及外键引用。 #### 8. 多对多关联 `...

    Hibernate ORM - 继承关联关系之union-subclass

    本文将深入探讨Hibernate ORM中的一个特定概念——继承关联关系的“union-subclass”策略。这个策略涉及到如何在面向对象的设计中处理类的继承关系,并将其映射到数据库中。 首先,我们来理解继承关联关系。在面向...

    hibernate 映射继承 demo

    《Hibernate映射继承实战解析》 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者用面向对象的方式处理数据,而无需关心底层SQL语句的编写。在大型项目中,...

    Hibernate继承映射二:每个子类一张表

    本篇主要探讨的是Hibernate中的继承映射策略,特别是“每个子类一张表”(Table per subclass)的方式。这种方式也被称为单表继承或多表继承,是Hibernate支持的四种继承映射策略之一。了解并熟练掌握这种映射模式...

    Hibernate 映射文件自动生成

    4. **关联映射**:自动识别并配置实体间的关联关系,如外键和关联类的引用。 5. **更新数据库表**:在生成映射文件后,还可以结合Hibernate的SchemaExport工具生成或更新数据库表结构。 这样的自动化过程可以帮助...

    Hibernate继承映射的第一种策略:每个具体类一张表

    本篇文章将详细探讨Hibernate继承映射的策略,特别是“每个具体类一张表”(Table Per Concrete Class)的映射方式。 在面向对象编程中,继承是常见的代码复用手段,但在关系型数据库中,这种概念并不直接对应。...

    Hibernate简介与快速入门

    - **开源与普及**: Hibernate是一个开源项目,其设计理念是低侵入式的,这意味着开发者可以继续使用普通的Java对象(POJO)来进行数据库操作,无需实现特定的接口或者继承特定的类。这种设计极大地降低了学习成本,...

Global site tag (gtag.js) - Google Analytics