- 浏览: 108785 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
ldwtill:
overwrite呢?
overload,overwrite和override比较 -
dafeiwang:
...
过滤器和拦截器的区别
这篇文章紧接着hibernate详解(二)----->>继承关系映射(一)。
下面介绍另外两种关系继承关系映射方案:
第二种:每个子类一张表
其他的类都一样,就有一个xml文件不一样,里面有些内容不一样
Student.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Singer" table="singer">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <!-- 映射普通属性 -->
- <property name="name" />
- <property name="region" />
- <property name="description" />
- <!-- 用joined-subclass元素给每个子类映射到一张表 -->
- <joined-subclass name="com.zxf.domain.SingleSinger"
- table="single_singer">
- <!-- 用key元素来指定子类和父类之间是通过哪个字段来关联的 -->
- <key column="singler_id" />
- <!-- 映射本子类的属性 -->
- <property name="gender" />
- </joined-subclass>
- <!-- 用joined-subclass元素给每个子类映射到一张表 -->
- <joined-subclass name="com.zxf.domain.Bands"
- table="bands">
- <!-- 用key元素来指定子类和父类之间是通过哪个字段来关联的 -->
- <key column="bands_id" />
- <!-- 映射本子类的属性 -->
- <property name="leader"/>
- </joined-subclass>
- </class>
- </hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Singer" table="singer"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <generator class="native" /> </id> <!-- 映射普通属性 --> <property name="name" /> <property name="region" /> <property name="description" /> <!-- 用joined-subclass元素给每个子类映射到一张表 --> <joined-subclass name="com.zxf.domain.SingleSinger" table="single_singer"> <!-- 用key元素来指定子类和父类之间是通过哪个字段来关联的 --> <key column="singler_id" /> <!-- 映射本子类的属性 --> <property name="gender" /> </joined-subclass> <!-- 用joined-subclass元素给每个子类映射到一张表 --> <joined-subclass name="com.zxf.domain.Bands" table="bands"> <!-- 用key元素来指定子类和父类之间是通过哪个字段来关联的 --> <key column="bands_id" /> <!-- 映射本子类的属性 --> <property name="leader"/> </joined-subclass> </class> </hibernate-mapping>
运行结果如下图所示:
第三种:每个具体类一张表
其他的类都一样,就有一个xml文件不一样,里面有些内容不一样
Student.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <!-- 指定此类为抽象类 -->
- <class name="com.zxf.domain.Singer" abstract="true">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <!-- 映射主键生成方式为由Java应用程序负责生成标识符 -->
- <generator class="assigned" />
- </id>
- <!-- 映射普通属性 -->
- <property name="name" />
- <property name="region" />
- <property name="description" />
- <!-- 用union-subclass元素给每个具体子类映射到一张表 -->
- <union-subclass name="com.zxf.domain.SingleSinger"
- table="single_singer">
- <!-- 映射本子类的属性 -->
- <property name="gender" />
- </union-subclass>
- <!-- 用union-subclass元素给每个具体子类映射到一张表 -->
- <union-subclass name="com.zxf.domain.Bands"
- table="bands">
- <!-- 映射本子类的属性 -->
- <property name="leader"/>
- </union-subclass>
- </class>
- </hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 指定此类为抽象类 --> <class name="com.zxf.domain.Singer" abstract="true"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <!-- 映射主键生成方式为由Java应用程序负责生成标识符 --> <generator class="assigned" /> </id> <!-- 映射普通属性 --> <property name="name" /> <property name="region" /> <property name="description" /> <!-- 用union-subclass元素给每个具体子类映射到一张表 --> <union-subclass name="com.zxf.domain.SingleSinger" table="single_singer"> <!-- 映射本子类的属性 --> <property name="gender" /> </union-subclass> <!-- 用union-subclass元素给每个具体子类映射到一张表 --> <union-subclass name="com.zxf.domain.Bands" table="bands"> <!-- 映射本子类的属性 --> <property name="leader"/> </union-subclass> </class> </hibernate-mapping>
运行结果如下图所示:
备注:
继承映射最常用的方案就是以上介绍的三种,在实际开发中,怎么选择合适的方案,笔者根据自己的工作经验,给读者提供一些经验。
- 如果不需要度多态查询:使用每个具体类一张表。
- 一定要使用多态查询:子类中的属性相对较少,使用每个继承层次一张表。
- 子类中的属性较多,使用每个子类一张表。
- 简单的问题一般选择每个继承层次一张表,复杂案例额一般选择每个子类一表。
发表评论
-
hibernate五大核心接口及其应用
2011-05-02 20:28 898所有的Hibernate应用中都会访问Hibernate的5个 ... -
hibernate fetch 和lazy
2011-05-02 19:42 1077经过测试发现Hibernate annotation ... -
hibernate优化
2011-05-02 09:56 746口诀 1、使用双向一对多关联, ... -
Hibernate详解(一)------->>入门
2011-05-02 09:35 779Hibernate是一个开放源代码的对 ... -
hibernate详解(二)---->>继承关系映射(一)
2011-05-02 09:34 813继承是面对对象编程中一个很 ... -
hibernate详解(三)----->>组件映射(一)
2011-05-02 09:33 793Hibernate建议在进行领域模型建模时要细 ... -
hibernate详解(三)----->>组件映射(二)之复合主键
2011-05-02 09:31 9453、组件类作为持久化类的对象标识符属性 ... -
Hibernate详解(四)---->>关联关系映射(二)
2011-05-02 09:29 9623、单向一对一 每个中国公民都有一张身份证 ... -
Hibernate详解(四)---->>关联关系映射(一)
2011-05-02 09:27 841关联关系是在领域模型建模中经常使用到的一 ... -
hibernate的二级缓存
2011-05-02 08:58 609Hibernate二级缓存也称为进程级的缓存或Sessio ... -
全面讲解Hibernate二级缓存
2011-05-02 08:56 671在向大家详细介绍Hibernate二级缓存之前,首先让大家了解 ... -
hibernate工作原理及为什么要使用
2011-05-02 08:51 903Hibernate工作原理及其作用 Java学习笔记 201 ... -
hibernate连接池
2011-05-02 08:49 797我分别用以下链接方式测试了一下:tomcat自带的连接池< ... -
hibernate关联
2011-05-02 08:35 752Hibernate关联关系 收藏 在域模型钟, ... -
Hibernate Criteria Query
2011-05-02 08:34 670Hibernate-Criteria Query 收藏 Cri ... -
hibernate----Inverse 和 cascade区别
2011-05-02 08:15 825Inverse 和 cascade的区别 ... -
Spring中配合hibernate使用的简单例子
2011-05-01 20:42 674最近在看SPRING和hibernate,学习了sprin ... -
hibernate 之inverse重点复习
2011-05-01 20:00 680inverse的原因,在于单向的一对多的低效而造成的.举个 ... -
hibernate中只选取某些列的写法
2011-05-01 18:44 786在普通的sql中,为了选取某些列,其实是很简单的,就sele ... -
HQL返回值
2011-05-01 18:35 1203Hibernate查询单个字段,Hibernate把每个id做 ...
相关推荐
12.4 选择继承关系的映射方式 12.5 映射多对一多态关联 12.6 小结 12.7 思考题 第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入...
Hibernate_映射配置文件详解,个人觉的比较不错的关于hibernate讲解的ppt,对于xml配置,继承关系,多对多等关系映射讲的很详细!
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
该文档详细讲解了Hibernate的几个核心技术:Hibernate的配置文件、缓存机制、查询策略、事务管理、HQL和QBC、一对多、一对一、多对多映射关系、继承映射等,并且还有配有实例。
10. 继承映射(Inheritance Mappings) 10.1. 三种策略 10.1.1. 每个类分层结构一张表(Table per class hierarchy) 10.1.2. 每个子类一张表(Table per subclass) 10.1.3. 每个子类一张表(Table per subclass),...
12.4 选择继承关系的映射方式 12.5 映射多对一多态关联 12.6 小结 12.7 思考题 第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入...
12.4 选择继承关系的映射方式 12.5 映射多对一多态关联 12.6 小结 12.7 思考题 第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入...
我培训用的 Hibernate课件, 个人能力范围内精心整理,图文并茂. 希望能对大家学习 Hibernate 提供帮助. 这是第二篇, 内容如下:Hibernate配置文件;jdbc.fetch_size;jdbc.batch_size; POJO 类和数据库的映射...继承映射
12.4 选择继承关系的映射方式 12.5 映射多对一多态关联 12.6 小结 12.7 思考题 第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
第二部分 映射概念和策略 第4章 映射持久化类 4.1 理解实体和值类型 4.1.1 细粒度的领域模型 4.1.2 定义概念 4.1.3 识别实体和值类型 4.2 映射带有同一性的实体 4.2.1 理解Java同一性和...
第三部分示范开发了一个包含7个表,表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,让读者理论联系实际,将三个框架真正运用到实际开发中去。该案例采用目前最流行、最规范的Java EE架构...
4.3.11 映射继承关系 260 4.3.12 hibernate的集合映射 266 4.4 小结 270 第5章 hibernate 3持久化技术实践与性能优化 271 5.1 操作持久化对象的常用方法介绍 271 5.1.1 使用session的begintransaction()方法 ...
43 Hibernate 关联映射 44 HQL实用技术 45 HQL高级 46 Criteria 查询 47-49 项目实战 影院信息查询系统 50 pl/sql 51 Oracle数据库对象 52 提高数据库性能 53 hibernate总结 54 使用Spring容器管理JavaBean 55 ...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...
3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...
9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用TransactionTemplate 9.6.2. ...