Hibernate4继承映射
Hibernate 支持三种基本的继承映射策略:
1、单表继承:每棵类继承树使用一个表
2、具体表继承:每个子类一个表
3、类表继承:每个具体类一个表(有一些限制)
三种方式的比较:
1、所有类映射成一张表会产生数据冗余(不过这是通常采用的方法)
2、每个类映射成一张表会有效率问题,比如是三层或四层结构时,对于查询或更新会发出很多sql语句
3、具体类映射成表的缺点是主键不能自增
结论:使用第一种方式
- /** 动物 */
- public class Animal {
- private Integer id;
- private String name;
- private String type;
- //getter and setter
- }
- /** 猪 */
- public class Pig extends Animal {
- private Double weight;
- //getter and setter
- }
- /** 鸟 */
- public class Bird extends Animal{
- private String color;
- //getter and setter
- }
- <hibernate-mapping package="org.monday.hibernate4.domain">
- <class name="Animal" table="tbl_animal">
- <id name="id">
- <generator class="identity" />
- </id>
- <!-- 辨别者列 -->
- <discriminator column="type" type="string" />
- <property name="name" />
- <!-- 子类 -->
- <subclass name="Pig" discriminator-value="p">
- <property name="weight" />
- </subclass>
- <!-- 子类 -->
- <subclass name="Bird" discriminator-value="b">
- <property name="color" />
- </subclass>
- </class>
- </hibernate-mapping>
下面是基于注解的
- /** 动物 */
- @Entity
- @Table(name = "tbl_animal")
- @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
- @DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
- @DiscriminatorValue("a")
- public class Animal {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Integer id;
- private String name;
- // getter and setter
- }
- /** 猪 */
- @Entity
- @DiscriminatorValue("p")
- public class Pig extends Animal {
- private Double weight;
- //getter and setter
- }
- /** 鸟 */
- @Entity
- @DiscriminatorValue("b")
- public class Bird extends Animal {
- private String color;
- // getter and setter
- }
Hibernate4继承映射相关推荐
- Hibernate之继承映射
Hibernate的继承映射可以理解为两个持久化类之间的继承关系 例如老师和人之间的关系 持久化类 Person类 public class Person { private Inte ...
- 第10 章继承映射(InheritanceMappings)
10.1. 三种策略 Hibernate支持三种基本的继承映射策略: ·每个类分层结构一张表(table per class hierarchy) ·每个子类一张表(table per subclas ...
- OpenXava 4.5支持JPA继承映射和自动化业务逻辑
OpenXava是一个支持快速企业级应用开发的Java框架,其最新版本支持所有的JPA继承映射策略和自动化业务逻辑(Automated Business Logic,ABL)库.OpenXava 4. ...
- Hibernate读书笔记---继承映射
对于面向对象的程序设计语言,继承.多态是两个最基本的概念.Hibernate的继承映射可以理解两个持久化类之间的继承关系. Hibernate支持几种继承映射策略,不管哪种继承映射策略,Hiberna ...
- 浅析Hibernate映射(三)——继承映射
对象模型示例: 继承映射的实现方式有三种: (一)每棵类继承树一张表 关系模型: 映射文件: <hibernate-mapping package="com.jialin.hibern ...
- NHibernate Inheritance Mapping 继承映射
参考PoEAA,继承的设计模式有:Concrete Table Inheritance(具体表继承).Single Table Inheritance(单表继承).Class Table Inheri ...
- Hibernate继承映射
Hibernate继承映射 在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键 ...
- Hibernate→HQL、query.list()返回数据类型、查询相关语句、分页、原生SQL、@注解、持久化对象状态及生命周期、一多关系、继承映射关系、逆向工程
HQL Query实例与表 session通用工具类 Query对象 from 类→List<类>接收 映射类 仅查询商品 查询商品及所在商家 别名 返回数据类型定义 Iterator接收 ...
- Hibernate第九篇【组件映射、继承映射】
前言 到目前位置,我们已经学习了一对一.一对多.多对一.多对多映射了-既然Hibernate是ORM实现的框架,它还提供了组件映射和继承映射..本博文主要讲解组件映射和继承映射 Java主要的类主要有 ...
最新文章
- L1-005 考试座位号 (15分) C语言实现(18行代码AC!)
- python中text怎么旋转字体_Python+OpenCV实现旋转文本校正方式
- python获取中文字体点阵坐标_Python实现点阵字体读取与转换的方法
- 标签 href 怎么拼接_【微信】用户-标签的兴趣建模
- IP,VIP,SCAN IP之间的关系是怎么样的呢?
- 使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#
- 后台的Activity被系统回收怎么办?
- C语言实现斐波那契数列
- Keil 系列软件安装(一)Keil C51(Keil4)
- 知识付费的痛点:如何让用户持续学习?
- 基于whisper模型的在线添加视频字幕网站(持续更新)
- 男士黑色手表的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 阿里云企业物联网平台推出千里传音播报服务 高效打造云端一体智能硬件
- Sky Hackthon比赛指北-基础篇
- 生物识别身份验证:技术的现状和发展趋势
- 计算机基础 MBR主引导记录
- 和平精英灵敏度分享码服务器没有响应,和平精英主播灵敏度
- 批处理文件 执行java_利用批处理文件运行java程序
- LeetCode:390. 消除游戏————中等
- yum https ssl双向认证 证书申请
热门文章
- hdu2235 机器人的容器
- 【Android NDK 开发】JNI 引用 ( 全局引用 | NewGlobalRef | DeleteGlobalRef )
- 【Java 网络编程】服务器端 ServerSocket 配置 ( 端口复用 | 缓冲区设置 | 超时时间 | 性能权重 | 端口绑定 )
- nmon服务器监控工具的使用安装
- idea创建一个SpringBoot项目
- 51NOD 1001 数组中和等于K的数对
- 01.Python基础-3.集合容器
- java中的访问修饰符 (2013-10-11-163 写的日志迁移
- Doubly Linked List,( Aizu - ALDS1_3C )
- MySQL 清理slowlog方法