码农小汪-Hibernate学习10-hibernate继承映射 @DiscriminatorColumn DiscriminatorType @Inheritance InheritanceType
2016-04-04 22:31
567 查看
一共有三种方式,处理继承映射。必须考虑到数据的冗余度。
全部放在一张表
父亲的放在一张表,儿子只是保存和父亲不一样的,增加的属性。
父亲保存父亲的,儿子保存儿子的。自己管理自己的
一共就上面上种讲的通俗易懂,简单好理解
一种中的来吧
为了使用鉴别器,我们专门设立了一个列。@DiscriminatorColumn,里面的属性呢有个name 和普通过的@Cloumn一样的性质,还有一个是!discriminatorType ,这个属性说明我们用什么来区分父子的属性
DiscriminatorType.CHAR
DiscriminatorType.INTEGER
DiscriminatorType.STRING
一看就懂了~~
除了这个之外呢还有个
@DiscriminatorValue 来修饰每个类
person下面有Customer 和 employee
全部都是放在一张表里面去啦,这样子啦啦啦~~
这种 策略不是Hibernate默认的继承策略必须定制这种
@Inheritance
InheritanceType.SINGLE_TABLE
InheritanceType.JOINED第二个
InheritanceType.TABLE_PERCLASS 每一个子类
这种策略无需使用辨别者,只要继承树的根实体类上面有这个属性就ok啦
搞定
第三种和第二种一样的~没事好说的。每个子类都有一张完整的表,包含自己和父亲的所有属性。
全部放在一张表
父亲的放在一张表,儿子只是保存和父亲不一样的,增加的属性。
父亲保存父亲的,儿子保存儿子的。自己管理自己的
一共就上面上种讲的通俗易懂,简单好理解
一种中的来吧
Signal——table
全部放在一个表中使用一个列来区分父子。discriminator n.辨别者,鉴别器;为了使用鉴别器,我们专门设立了一个列。@DiscriminatorColumn,里面的属性呢有个name 和普通过的@Cloumn一样的性质,还有一个是!discriminatorType ,这个属性说明我们用什么来区分父子的属性
DiscriminatorType.CHAR
DiscriminatorType.INTEGER
DiscriminatorType.STRING
一看就懂了~~
除了这个之外呢还有个
@DiscriminatorValue 来修饰每个类
person下面有Customer 和 employee
@Entity // 定义辨别者列的列名为person_type,列类型为字符串 @DiscriminatorColumn(name="person_type" , discriminatorType=DiscriminatorType.STRING) // 指定Person实体对应的记录在辨别者列的值为"普通人" @DiscriminatorValue("普通人") @Table(name="person_inf") public class Person
// 顾客类继承了Person类 @Entity // 指定Customer实体对应的记录在辨别者列的值为"顾客" @DiscriminatorValue("顾客") @Table(name="customer_inf") public class Customer extends Person
// 员工类继承了Person类 @Entity // 指定Employee实体对应的记录在辨别者列的值为"员工" @DiscriminatorValue("员工") @Table(name="employee_inf") public class Employee extends Person
全部都是放在一张表里面去啦,这样子啦啦啦~~
连接子类映射策略
就是刚刚上面讲的第二种,比较的通俗易懂这种 策略不是Hibernate默认的继承策略必须定制这种
@Inheritance
InheritanceType.SINGLE_TABLE
InheritanceType.JOINED第二个
InheritanceType.TABLE_PERCLASS 每一个子类
这种策略无需使用辨别者,只要继承树的根实体类上面有这个属性就ok啦
搞定
@Entity // 指定使用连接子类的映射策略 @Inheritance(strategy=InheritanceType.JOINED) @Table(name="person_inf") public class Person
第三种和第二种一样的~没事好说的。每个子类都有一张完整的表,包含自己和父亲的所有属性。
相关文章推荐
- 面试题19 二叉树的镜像
- 安卓面试题
- 面试题18 树的子结构
- 程序员有趣的面试智力题
- 黑马程序员-学习笔记03
- 黑马程序员-学习笔记02
- 黑马程序员,学习笔记01
- 成为顶尖自由职业者必备的7个软技能之一:沟通(转)
- java多线程--几个多线程面试题小结
- 我的求职之路:9个offer,12家公司,35场面试,最终谷歌
- [置顶] 整理最全的Android开发工程师面试题,面试题详解。java、Android程序员
- 剑指offer面试题之和为S的连续正数序列
- 面试题15 链表中倒数第k个结点
- 面试题14 调整数组顺序使奇数位于偶数前面
- 七个对我最重要的职业建议(译文)
- CPU处理多任务——中断与轮询方式比较
- 面试题13 在O(1)时间删除链表结点
- 面试题12 打印1到最大的N位数
- [面试] Java高级软件工程师面试考纲(转)
- 根据《程序员竞争力矩阵》的自我评价