Hhibernate--映射继承关系

hibernate映射继承关系:有三种方式实现
subclass joined_cubclass union_subclass

1. subclass 父类和子类同在一张表,里面加入了辨别者列,通过辨别者列的值来区分,子类对象和父类对象
优点:只操作一个表
缺点:子类的属性,不能设置为非空 。如果子类的属性较多,一个表的字段就非常多
辨别者列只能放在id列后面:例

<id></id>
<discriminator column="TYPE" type="string"></discriminator>
//discriminator-value="student"指定的是子类在辨别者类中的值
<subclass name="Student" discriminator-value="student">
  <property name="school" column="SCHOOL" ></property>
</subclass>

2.joined_subclass 子类和父类,对应两张表,通过外键,实现关系
父类表存父类字段,子类表存子类字段
优点,两个表字段没有多余 没有重复,子类属性,可以为非空
缺点:要操作两个表
例 有个person类,student是其子类

<joined-subclass name="Student" table="STUDENTS">
  <!-- 子类对应得表的外键名称 -->
  <key column="STUDENTID"></key>
  <!-- 子类的其他属性 -->
  <property name="school" column="SCHOOL" type="string"></property>
</joined-subclass>

3.union_subclass 父类和子类,对应两张表 ,父类表存父类字段,子类表存父类和子类字段

优点:子类属性,可以为非空,操作子类单表操作,操作父类 多表操作
缺点:子类对应的类,有很多父类的属性

<union-subclass name="Student" table="STUDENTS">
   <property name="school" column="SCHOOL" type="string"></property>
</union-subclass>
时间: 2024-10-07 14:21:47

Hhibernate--映射继承关系的相关文章

Entity Framework Code First 映射继承关系

转载 http://www.th7.cn/Program/net/201301/122153.shtml Code First如何处理类之间的继承关系.Entity Framework Code First有三种处理类之间继承关系的方法,我们将逐一介绍这三种处理方法. 1.Table Per Hierarchy(TPH): 只建立一个表,把基类和子类中的所有属性都映射为表中的列. 2.Table Per Type(TPT): 为基类和每个子类建立一个表,每个与子类对应的表中只包含子类特有的属性对

[原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

hibernate 映射继承关系

实现方式一般有三种: 1. 继承关系树每个具体类对应一张表(不介绍) 2. 继承关系树的根类对应一张表 3. 继承关系树的每个类对应一张表 先介绍关系: DayEmployee和MonthEmploy是Employee的子类,并且Company和Employee是一对多关系: 具体代码如下: Company.java import java.util.HashSet; import java.util.Set; public class Company { private Integer id;

hibernate注解映射继承关系

数据库表 用户表(User) id username password 客户表(Customer),客户表id引用用户表id id phone 员工表(Employee),员工表id引用用户表id id qq 飞机表(Plane),飞机表包含客机和战斗机,客机有厕所,战斗机有武器 id type speed wc_position weapon_position 实体映射 //子类共享属性id,version @MappedSuperclass public abstract class Ide

Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)

1. 2. 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping 3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping > 6 7 &l

hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系

hibernate环境配置:导包.... 单向n-1:单向 n-1 关联只需从 n 的一端可以访问 1 的一端 <many-to-one> 元素来映射组成关系: name: 设定待映射的持久化类的属性的名字 column: 设定和持久化类的属性对应的表的外键 class:设定待映射的持久化类的属性的类型 建立1所对应的封装类,这儿只写属性,setter和getter就不写了: private Integer customerId; private String customerName; 建立

深入Django ORM的继承关系

ORM中通常将对象引用映射到外键,但是对于继承,关系数据库中没有自然有效的方法来对应.从数据存储的角度来看,在映射继承关系时,可以采用几种方式(参考JPA中的InheritanceType.定义): 使用单个表,在JPA中称作SINGLE_TABLE.整个继承树共用一张表.使用唯一的表,包含所有基类和子类的字段. 每个具体类一张表,在JPA中称作TABLE_PER_CLASS.这种方式下,每张表都包含具体类和继承树上所有父类的字段.因为多个表中有重复字段,从整个继承树上来说,字段是冗余的. 每个

Hibernate之jpa实体映射的三种继承关系

在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承策略 单表继承策略,父类实体和子类实体共用一张数据库表,在表中通过一列辨别字段来区别不同类别的实体.具体做法如下: a.在父类实体的@Entity注解下添加如下的注解: @Inheritance(Strategy=InheritanceType.SINGLE_TABLE)@Discriminator

在Entity Framework 中实现继承关系映射到数据库表

继承关系映射到数据库表中有多种方式: 第一种:TPH(table-per-hiaerachy) 每一层次一张表 (只有一张表) 仅使用名为父类的类型名的一张表,它包含了各个子类的所有属性信息,使用区分列(Disciriminator column)(通常内容为子类的类型名)来区分哪一行表示什么类型的数据. 第二种:TPT(Table-per-type) 每种类型都有一张表(父类及每个子类都有表) 父类.各子类各自都有一张表.父类的表中只有共同的数据,子类表中有子类特定的属性.TPT很像类的继承结