Hibernate关于父类子类的映射
怕忘记,把栗子贴上来
以Person类和Student类为例
public class Person
{
private Integer id;
private String name;
private int age;
//省略setter、getter代码
}
public class Student extends Person
{
private String school;
//省略setter、getter代码
}
第一种方式:只有一张表的
直接贴映射文件内容
<hibernate-mapping package="com.zcd.exercise.subclass">
<class name="Person" table="PERSONS" discriminator-value="PERSON"> <id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id> <discriminator type="string">
<column name="TYPE"></column>
</discriminator> <property name="name" type="java.lang.String">
<column name="NAME" />
</property> <property name="age" type="int">
<column name="AGE" />
</property> <subclass name="Student" discriminator-value="STUDENT">
<property name="school" type="string" column="SCHOOL"></property>
</subclass> </class>
</hibernate-mapping>
第二种方式:分两张表存储
<hibernate-mapping package="com.zcd.exercise.unionSubclass">
<class name="Person" table="PERSONS"> <id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="hilo" />
</id> <property name="name" type="java.lang.String">
<column name="NAME" />
</property> <property name="age" type="int">
<column name="AGE" />
</property> <union-subclass name="Student" table="STUDENTS">
<property name="school" type="string">
<column name="SCHOOL"></column>
</property>
</union-subclass> </class>
</hibernate-mapping>
第三种方式:也是分两张表但是会把子类特有的属性单独存放在一张表,也就是相当于把一条记录拆开放在两张表中。
<hibernate-mapping package="com.zcd.exercise.joinedSubclass">
<class name="Person" table="PERSONS"> <id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id> <property name="name" type="java.lang.String">
<column name="NAME" />
</property> <property name="age" type="int">
<column name="AGE" />
</property> <joined-subclass name="Student" table="STUDENTS">
<key column="STUDENT_ID"></key>
<property name="school" type="string" column="SCHOOL"></property>
</joined-subclass> </class>
</hibernate-mapping>
Hibernate关于父类子类的映射的更多相关文章
- 【hibernate 初探】之 关系映射,ORM
从整理上讲,一个ORM框架(以hibernate为例)所涉及内容无非就是,如何映射,如何检索,还有事务处理.所以从这三方面入手,基本上可以保证将hibernate可以用到自己的项目之中.所以我先说一下 ...
- Hibernate第九篇【组件映射、继承映射】
前言 到目前位置,我们已经学习了一对一.一对多.多对一.多对多映射了-既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射 Java主要的类主要有 ...
- Java父类子类的对象初始化过程
摘要 Java基本的对象初始化过程,子类的初始化,以及涉及到父类和子类的转化时可能引起混乱的情况. 1. 基本初始化过程: 对于一个简单类的初始化过程是: static 修饰的模块(static变量和 ...
- C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象
C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象 讲解目录: 1.各类在内存中的表现形式 备注: 主要复习开发知识,和反汇编没有关系,但是是理解反汇编的前提. 2.子类继承父 ...
- Hibernate(三)结构-配置文件-实体映射及配置文件
一.体系结构 SessionFactory:属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.Session的工厂.有可能持有一个可选的数据缓存可以进程级别或者群级别保存可以在事务中 ...
- Hibernate One-to-One Mappings 一对一关系映射
Hibernate One-to-One Mappings 一对一关系映射 关键:一对一关系映射和多对一关系映射非常像.仅仅是unique 属性值为 true 样例:一个员工仅仅能有一个地址. Hib ...
- Hibernate 性能优化一对一关联映射
概述: hibernate提供了两种映射一对一关联的方式:按照外键映射和按照主键映射. 下面以员工账号和员工档案为例 ,介绍两种映射方式,并使用这两种映射方式分别完成以下持久化操作: (1)保存员工档 ...
- 使用Hibernate注解Annotations进行对象映射的异常处理
通过Hibernate注解Annotations进行对象映射,想在Oracle数据库中自动创建表,代码如下: 实体类: import javax.persistence.Basic;import ja ...
- java 静态资源,非静态资源,父类子类,构造方法之间的初始化循序
java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序.下面添加两个类做个测试 class Parent { // 静态变量 public static String p_Stat ...
随机推荐
- NPM 与前端包管理
我们很清楚,前端资源及其依赖管理一直是 npm 的重度使用场景,同时这也一直是 Node.js 普及的重要推动力.但这类应用场景到底有多重度?这是一个很难回答的问题.这份 “npm 最常下载的包的清单 ...
- 【关于eclipse的一些自己常用的插件】
代码自动走查: sonarlnt:
- 安装mysql Install/Remove of the Service Denied!错误的解决办法
在window 的cmd下安装mysql 在mysql的bin目录下面执行: mysqld --install 报错: 信息如下: Install/Remove of the Service Deni ...
- Linux中的叹号命令
在shell环境下操作,需要积累点快捷输入的小技巧: 最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用. 最近还找到一种快速回退上一 ...
- Excel删除空白行和列
Sub DeleteEmptyRows() Dim LastRow As Long, r As Long LastRow = ActiveSheet.UsedRange.Rows.Count Last ...
- css3特别篇图解FlexBox
图文转自微博网友勾三股四 一.flex-direction 二.flex-wrap 三.justify-content 四.align-items 五.align-content
- css以前忽略的一些知识点(知识体系搭建)
一.选择器 基本选择器: 通用元素选择器 标签选择器 类选择器 id选择器 组合选择器: 多元素组合选择器 后代元素选择器 子代元素选择器 毗邻元素选择器 属性选择器: [title] & P ...
- elastic job 动态设置定时任务
1. 版本 <!-- import elastic-job lite core --> <dependency> <groupId>com.dangdang< ...
- html标签篇(2)
上次讲到<a>标签,并没有细说a标签用法. <!DOCTYPE html> <html lang="en"> <head> < ...
- 1-3 Sass 语法、编译、调试
Sass 语法格式 这里说的 Sass 语法是 Sass 的最初语法格式,他是通过 tab 键控制缩进的一种语法规则,而且这种缩进要求非常严格.另外其不带有任何的分号和大括号.常常把这种格式称为 Sa ...