`

[转]hibernate的继承映射

阅读更多



Hibernate的继承映射包含了三种不同的策略:

  1. 每簇类使用一个表;
  2. 每个子类一个表;
  3. 每个具体内一个表(有限制)。
假设我们有四个类Animal,Dog,Cat,其代码如下:
文件名:Animal.java
class Animal {
    
private String identifier;
    
private String name;
    
private String category;
    
// setter and getter
}

文件名:Dog.java
class Dog extends Animal {
    
private String 
    
// setter and getter
}

文件名:Cat.java
class Cat extends Animal {
    
private String 
    
// setter and getter
}

  • 每簇类使用一个表
       使用每簇类使用一个表的策略时,有一个限制就时子类不能有NOT NULL,映射文件为:
       文件名:Animal.hbm.xml
xml 代码
  1. <class name="Animal" table="TB_ANIMAL">  
  2.    <id name="identifier" type="string" column="IDENTIFIER">  
  3.       <generator class="uuid.hex"/>  
  4.    </id>  
  5.    <discriminator column="ANIMAL_TYPE" type="string"/>  
  6.    <property name="name" column="NAME" type="string"/>  
  7.       
  8.    <subclass name="Dog" discriminator-value="DOG">  
  9.          
  10.    </subclass>  
  11.    <subclass name="Cat" discriminator-value="CAT">  
  12.          
  13.    </subclass>  
  14. </class>  

  • 每个子类一个表
       使用每个子类一个表的策略时,可以使用一个映射文件实现,也可以分成多个映射文件来实现。每个子类一个映射文件的情况:
       文件名:Animal.hbm.xml
xml 代码
  1. <class name="Animal" table="ANIMAL">  
  2.          <id name="identifier" column="IDENTIFIER" type="string">  
  3.             <generator class="uuid.hex"/>  
  4.          </id>  
  5.          <property >  
  6.       </class>  
  7.       文件名:Dog.hbm.xml   
  8.       <joined-subclass name="Dog" table="DOG" extends="Animal">  
  9.          <key column="DOG_ID"/>  
  10.             
  11.       </joined-subclass>  
  12.       文件名:Cat.hbm.xml   
  13.       <joined-subclass name="Cat" table="CAT" extends="Cat">  
  14.          <key column="CAT_ID"/>  
  15.             
  16.       </joined-subclass>  

       每个子类一个表的策略实际上一种one-to-one的映射。
  • 每个具体内一个表(有限制)
       使用每个具体内一个表(有限制)策略时,每一个子类的映射文件将要包含所有父类中的属性,映射文件:
       文件名:Dog.hbm.xml
xml 代码
  1. <class name="Dog" table="DOG">  
  2.    <id name="identifier" column="IDENTIFIER" type="string">  
  3.       <generator class="uuid.hex"/>  
  4.    </id>  
  5.    <property name="name" column="NAME" type="string"/>  
  6.       
  7. </class>  
  8. 文件名:Cat.hbm.xml   
  9. <class name="Cat" table="CAT">  
  10.    <id name="identifier" column="IDENTIFIER" type="string">  
  11.       <generator class="uuid.hex"/>  
  12.    </id>  
  13.    <property name="name" column="NAME" type="string"/>  
  14.       
  15. </class>  
分享到:
评论

相关推荐

    Hibernate继承映射代码

    本主题将深入探讨"Hibernate继承映射+C3P0代码"的相关知识点。 首先,让我们理解Hibernate的继承映射。在Java中,我们可以创建一个基类,然后派生出多个子类,这种设计模式在数据库中也可以被映射出来。Hibernate...

    Hibernate继承映射的第一种策略:每棵类继承树对应一张表

    Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...

    hibernate继承映射.rar

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

    用Hibernate映射继承关系

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

    Hibernate继承映射(annotation)

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

    Hibernate继承映射-概述

    《Hibernate继承映射详解》 在Java开发中,对象关系映射(ORM)框架如Hibernate大大简化了数据库操作。Hibernate不仅提供了对基本数据类型的映射,还支持复杂的数据结构,如继承关系的映射。本篇文章将深入探讨...

    hibernate继承映射教学

    针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...

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

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

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

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

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

    本文将详细探讨“Hibernate继承映射的第一种策略:每个类对应一张表”的概念、实现方式以及其优缺点。 首先,我们需要理解Hibernate继承映射的基本策略。在面向对象编程中,类继承是常见的代码复用手段,但在数据库...

    hibernate关联映射实例

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

    Hibernate继承映射一:每个类分层结构一张表

    本篇文章主要探讨的是Hibernate的继承映射策略,特别是“每个类分层结构一张表”(Table per Concrete Class)的方式。这种映射策略是Hibernate提供的多种继承映射方案之一,适用于处理复杂的对象模型。 首先,我们...

Global site tag (gtag.js) - Google Analytics