`
esffor
  • 浏览: 1372086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用每个子类一张表的方式进行Hibernate映射

阅读更多

同样是Student extends User, Teacher extends User

也许有人会有疑问,这种和每一个具体类一张表的映射策略有什么区别呢?他们的区别在于对每个类一张表的映射策略建立在所有的表是独立的,每个表都包括了子类所自定义的属性和父类继承的属性

而采取每个字类一张表的映射策略,子类所对应的表只包括子类所自定义的属性,而子类所对应的表鱼的父类所对应的表通过FK来关联,也就是说,当持久化子类是,需要在父类和子类中各增加一条记录,这两个记录通过FK关联

 

 <class table="USERINFO" name="cn.hxex.exam.model.User">
    
<id name="id" column="ID">
      
<generator class="uuid.hex"/>
    
</id>
    
<property name="name" column="NAME"/>
    
<property name="password" column="PASSWORD"/>
    
<property name="fullname" column="FULLNAME"/>
    
<joined-subclass name="cn.hxex.exam.model.Student" table="student">
        
<key column="ID">
         
<many-to-one column="CLASS_ID" cascade="save-update" name="classes"/>
    
</joined-subclass>
     
<joined-subclass name="cn.hxex.exam.model.Student" table="student">
        
<key column="ID">
          
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
            
<key column="TEACHER_ID"/>
            
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
           
</set>    
      
</joined-subclass>
  
</class>

 



分享到:
评论

相关推荐

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

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

    hibernate映射继承关系(每个类都对应一张表)

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了多种方式来处理继承关系的映射,其中一种就是"每个类都对应一张表"的策略。本文将深入探讨这种映射方式,以及如何在Hibernate中实现它。 首先,...

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

    这样,每个子类的表都有完整的属性,无需额外的关联表。 - **优点**:减少了表的数量,简化了查询,特别是在子类数量多的情况下,避免了复杂的关联操作。 - **缺点**:可能导致数据冗余,因为父类的属性会在每个...

    用Hibernate映射继承关系

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

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

    3. **配置映射文件**:如果使用XML配置,需要在每个子类的映射文件中添加`&lt;discriminator&gt;`元素。 4. **持久化和查询**:现在可以像操作普通实体一样,对这些继承类进行保存、更新和查询操作。Hibernate会自动处理...

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

    2. 每个子类都有一张表,可能导致更多的数据库表,这可能会影响数据库的性能和管理复杂性。 3. 由于每张表都有自己的主键,所以不能共享同一个主键序列,可能需要为每个子类单独设置主键生成策略。 总之,“每个类...

    Hibernate继承映射代码

    2. 联合继承:每个子类都有自己的表,基类中的公共属性会被共享到一个单独的表中。这种策略可以保持表结构清晰,但可能导致大量的JOIN操作。 3. 表 per 类继承:每个类都对应一个单独的表,包括基类。这种策略易于...

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

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

    hibernate关联映射实例

    CTI则是每个子类对应一张表;TPH将所有类的属性都放入一张表,使用`@Inheritance(strategy=InheritanceType.SINGLE_TABLE)`、`@Inheritance(strategy=InheritanceType.JOINED)`或`@Inheritance(strategy=...

    [原]Hibernate集合映射

    Hibernate作为Java领域中的一款强大持久化框架,其核心功能之一就是对象关系映射(ORM),使得开发者可以方便地在Java对象与数据库表之间进行交互。其中,集合映射是Hibernate中非常关键的概念,它允许我们将数据库...

    hibernate的继承映射(InheritanceMapping)[文].pdf

    10.1.4. 混合使用“每个类分层结构一张表”和“每个子类一张表” 在某些情况下,开发者可以选择在继承层次的不同部分使用不同的映射策略,然后通过隐式多态来实现整个层次的多态性。但Hibernate不支持在同一阶级元素...

    Hibernate映射继承关系的三种方案.docx

    1) **Subclass映射**:这是最简单的一种方式,每个子类都映射到一个单独的表。这种方式下,Hibernate不会在数据库中体现继承关系,而是为每个类创建一个独立的表。这种方式适用于子类有很多特定的属性,而父类属性较...

    hibernate继承映射.rar

    联合继承策略中,基类和每个子类都有自己的表,子类表中包含基类表的主键作为外键。这种方式适合当基类有属性,而子类没有额外属性时使用。在Hibernate-lab2实验中,如果`Person`类有通用属性如`name`和`age`,而`...

    Hibernate映射关系大全

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来处理数据库操作。映射关系是 Hibernate 中的核心概念,它定义了对象模型与数据库表之间的对应关系。以下是对给定文件中提到的各种...

    Hibernate继承关系映射.pdf

    隐式继承映射也称为“表/子类”映射策略,它为继承层次中的每个子类创建一个独立的表,并在每个子类表中重复父类的属性。这种方式下,父类并没有对应的表,而是由子类表来间接表示。 #### 示例代码 ```xml ...

    hibernate 映射继承 demo

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

    Hibernate继承映射-概述

    3. **联合继承(Concrete Table Inheritance)**:每个子类都有自己的数据库表,且包含所有子类的属性,父类不映射为任何表。 二、单表继承 在单表继承中,所有的类实例数据都存储在一个表中。Hibernate通过`@...

Global site tag (gtag.js) - Google Analytics