Hibernate的继承映射
2015-10-29 13:23
369 查看
一、创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql、Oracle、SqlServer等)的Jar包,创建 hibernate.cfg.xml 文件,并配置,配置项如下:
View Code
3、备注:
1、采用 union-subclass 元素可以实现将每一个实体对象映射到一个独立的表中;
2、子类增加的属性可以有非空约束,子类实例的数据仅保存在子类表中;
3、使用 union-subclass 映射策略,既不需要使用鉴别者列,也无须使用 key 元素来映射共有主键;
4、使用 union-subclass 映射策略是不可使用 identity 的主键生成策略;
5、插入操作:对于子类对象只需把记录插入到一张数据表中;
6、查询操作:查询父类记录,需把父表和子表记录汇总到一起再做查询,性能稍差。查询子类记录, 也只需要查询一张数据表;
4、优缺点:
优点:
1. 无需使用辨别者列.
2. 子类独有的字段能添加非空约束.
缺点:
1. 存在冗余的字段
2. 若更新父表的字段, 则更新的效率较低
建议使用 joined-subclass 进行映射或者使用 union-subclass 进行映射
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.mcs.hibernate.entities.union.subclass"> <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" column="SCHOOL" type="string"></property> </union-subclass> </class> </hibernate-mapping>
View Code
3、备注:
1、采用 union-subclass 元素可以实现将每一个实体对象映射到一个独立的表中;
2、子类增加的属性可以有非空约束,子类实例的数据仅保存在子类表中;
3、使用 union-subclass 映射策略,既不需要使用鉴别者列,也无须使用 key 元素来映射共有主键;
4、使用 union-subclass 映射策略是不可使用 identity 的主键生成策略;
5、插入操作:对于子类对象只需把记录插入到一张数据表中;
6、查询操作:查询父类记录,需把父表和子表记录汇总到一起再做查询,性能稍差。查询子类记录, 也只需要查询一张数据表;
4、优缺点:
优点:
1. 无需使用辨别者列.
2. 子类独有的字段能添加非空约束.
缺点:
1. 存在冗余的字段
2. 若更新父表的字段, 则更新的效率较低
建议使用 joined-subclass 进行映射或者使用 union-subclass 进行映射
相关文章推荐
- 数组内两个元素的最大差
- scrollview自适应listview的四种方案
- C# 关于用7zip压缩文件提示win32exception 系统找不到文件解决方案(win7 x64)
- Static关键字
- 集群的负载均衡技术
- MySQL全世界最流行的开源数据库软件
- Linux下PHP安装配置MongoDB数据库连接扩展
- G - Distant Galaxy
- iOS UICollectionViewController基本使用方法和简单的相册实现
- Java内存分配
- (转载)Mac OS X 跟新到10.11后cocoapods安装出现的问题(- bad response Not Found 404 (http://ruby.taobao.org/latest_spe)
- 数据库表及字段命名规范
- Java中的内存泄露问题
- CDN网络加速技术
- MySql学习笔记_01_安装、建表
- java核心技术细语解读易忽视点(一)(1-3章)
- Gomoku五子棋OC实现
- HTTP Keep-Alive详解[转]
- DNS负载均衡与负载均衡器两种方案的选择
- getopt()函数