一、单表继承映射

  父子类合成一张表

  

An_id

An_name

gender

Weight

Height

type

1

dog

1

300

D

2

cat

1

100

C

  在Animal.hbm.xml配置文件中:

  

1 <!-- 鉴别器,在单表中加入一列来区分子类的 -->
2 <discriminator column="type" type="string"></discriminator>
3 <subclass name="Dog" discriminator-value="d">
4 <!-- 子类中的属性映射 -->
5 <property name="weight"></property>
6 </subclass>
7 <subclass name="Cat" discriminator-value="c">
8 <property name="height"></property>
9 </subclass>

二、父子类继承映射

  父类产生父类表,子类产生子类表

 1 <!--
2 子类映射配置
3 name:子类的名字
4 table:子类映射表名
5 -->
6 <joined-subclass name="Pig" table="t_pig">
7 <!--
8 key:字表的主键设置
9 column:主键名称
10 -->
11 <key column="pid"></key>
12 <!-- 子类的属性映射 -->
13 <property name="weight"></property>
14 </joined-subclass>
15 <joined-subclass name="Bird" table="t_bird">
16 <!--
17 key:字表的主键设置
18 column:主键名称
19 -->
20 <key column="bid"></key>
21 <!-- 子类的属性映射 -->
22 <property name="height"></property>
23 </joined-subclass>

父子表的映射因为生成的表多张,查询的时候我们需要多表连接查询,所以效率没有单表继承映射高

三、子表继承映射

  

 1 <!-- 字表映射,需要把父类的映射设置成抽象的(不会产生父表)
2 abstract="true"
3 -->
4 <class name="Animal" table="t_animal" abstract="true">
5 <!-- id
6 是主键映射配置
7 -->
8 <id name="anId" column="an_id">
9 <!--
10 generator:主键的映射策略
11 -->
12 <generator class="uuid"></generator>
13 </id>
14
15 <property name="anName" column="an_name"></property>
16 <property name="gender"></property>
17
18 <!-- 子表映射 -->
19 <union-subclass name="Pig" table="t_pig">
20 <property name="weight"></property>
21 </union-subclass>
22 <union-subclass name="Bird" table="t_bird">
23 <property name="height"></property>
24 </union-subclass>

Hibernate4.3 继承映射的更多相关文章

  1. Hibernate4.x之映射关系--继承映射

    Hibernate的继承映射可以理解为持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到. Hibernate支持以下三 ...

  2. EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子

    本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,自动生成的discr ...

  3. 【Hibernate框架】三种继承映射

    一.综述 大家都知道,hibernate作为ORM框架的一个具体实现,最大的一个优点就是是我们的开发更加的能体现出"面向对象"的思想.在面向对象开发中,类与类之间是可以相互继承的( ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (35) ------ 第六章 继承与建模高级应用之TPH继承映射中使用复合条件

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-11  TPH继承映射中使用复合条件 问题 你想使用TPH为一张表建模,建模中使 ...

  5. 《Entity Framework 6 Recipes》中文翻译系列 (36) ------ 第六章 继承与建模高级应用之TPC继承映射

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-12  TPC继承映射建模 问题 你有两张或多张架构和数据类似的表,你想使用TP ...

  6. hibernate笔记--继承映射关系的三种实现方式

    单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映 ...

  7. 【JavaEE】Hibernate继承映射,不用多态查询只查父表的方法

    几个月前,我在博问里面发了一个问题:http://q.cnblogs.com/q/64900/,但是一直没有找到好的答案,关闭问题以后才自己解决了,在这里分享一下. 首先我重复一下场景,博问里面举的动 ...

  8. Hibernte继承映射

    继承映射分为三种: 继承结构共用一张表结构 每个类一张表结构 每个具体类一张表结构 下面使用Animal.Dog.Fish举例 Animal类如下: package com.hml.domain.a; ...

  9. Hibernate中的继承映射

    1.继承映射 继承映射分为两种情况:简单继承映射和继承映射. 在简单继承映射中,每个子类都要写一个映射文件. 在继承映射中,只使用一个映射文件.继承映射分为三种情况: 所有子类映射到一张表 需要使用鉴 ...

随机推荐

  1. SPFA算法详解

    前置知识:Bellman-Ford算法 前排提示:SPFA算法非常容易被卡出翔.所以如果不是图中有负权边,尽量使用Dijkstra!(Dijkstra算法不能能处理负权边,但SPFA能) 前排提示*2 ...

  2. docker 创建mysql和redis

    1      镜像加速 创建docker 目录 sudo mkdir -p /etc/docker 镜像加速: sudo tee /etc/docker/daemon.json <<-'E ...

  3. springboot文件上传(可单文件/可多文件)

    获取文件内容,是从InputStream中获取,添加到指定位置的文件 如下所示 public static void getFile(InputStream is,File fileName) thr ...

  4. C语言中存储多个字符串的两种方式

    C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...

  5. 用maven整合SSM中jsp运行报404和500问题解决方案

    如果代码检查没有错误,建议更改maven版本,可以改为maven-3.6.1 网址:https://archive.apache.org/dist/maven/maven-3/ 选择3.6.1 再点击 ...

  6. spring-boot如何生成元数据与javaBean进行关联用作配置文件提示

    spring-boot如何生成元数据与javaBean进行关联用作配置文件提示 首先需要引入一个jar依赖包,以及一个maven plugin如下所示 <dependency> <g ...

  7. java工具类去掉字符串String中的.点。android开发java程序员常用工具类

    下面是工具类详细代码: package com.qq986945193.david; /** * qq986945193 Project * ============================= ...

  8. RabbitMQ 3.8.7 在 centos7 上安装

    1.安装 erlang 因为 RabbitMQ 是 erlang 语言开发,所以需要依赖 erlang 环境,所以在安装 RabbitMQ 前需要先安装 erlang wget https://pac ...

  9. [BUUOJ记录] [强网杯 2019]随便注(三种方法)

    本题主要考察堆叠注入,算是比较经典的一道题,在i春秋GYCTF中也出现了本题的升级版 猜测这里的MySQL语句结构应该是: select * from words where id='$inject' ...

  10. SpringBoot程序启动时在Oracle数据库中建表充值

    例子工程下载链接:https://files.cnblogs.com/files/xiandedanteng/gatling20200428-1.zip 需求:在工程启动时在Oracle数据库中建表. ...