- 浏览: 1214135 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (434)
- js (20)
- struts2 (77)
- spring (11)
- hibernate (17)
- ssh整合 (9)
- 程序例子 (4)
- 正则表达式 (8)
- JSP (20)
- IDE (15)
- 数据库 (10)
- 工作经验技巧感悟 (21)
- 程序员的幽默 (4)
- windows设置 (4)
- 名词解释 (4)
- 技术入门 (4)
- jFreeChart (16)
- OGNL (5)
- java基础 (46)
- dwr (4)
- portal (1)
- 示例用到的附件 (0)
- 优秀程序员45个习惯 (1)
- webService (1)
- shell (3)
- ibatis (3)
- 开发工具 (1)
- OS (3)
- xmlbean (2)
- design_pattern (0)
- error (1)
- testng (2)
- python (18)
- hadoop (21)
- mapreduce (9)
- Hive (0)
- HBase (0)
- ubuntu (22)
- 多线程 (7)
- 自我改进 (6)
- 设计模式 (1)
- ssh (2)
- ant (4)
- guake (2)
- 云计算 (9)
- hdfs (3)
- 大数据 (1)
- 电信业务 (1)
- maven (2)
- svn (5)
- UML (1)
- 待处理问题 (2)
- log4j (1)
- css (1)
- LevelDb (0)
- thrift (6)
- 辅助工具 (3)
- 算法 (1)
- tornado (0)
- twisted (1)
- jvm (0)
- 图书 (1)
- 其他 (1)
- oracle (2)
- mvn (1)
- 私人信息 (0)
- nio (1)
- zookeeper (1)
- JavaIO (3)
- mongodb (1)
- java-高级 (6)
- spring-深入 (1)
- tomcat (1)
- quartz (1)
- 面试题 (1)
- redis (3)
- EJBCA (0)
- spring-3.0 (1)
- memcache (3)
- 性能检测 (1)
- android (0)
- 开源项目 (1)
- 将博客搬至CSDN (0)
- 架构之路 (1)
最新评论
-
pjwqq:
“子类对象”都拥有了“父类对象的一个实例的引用”我晕,应该是“ ...
java继承--父类属性的存放位置 -
gwgyk:
关于楼主最后的问题,我想可能是这样:InputFormat默认 ...
eclipse 运行hadoop wordcount -
fanjf:
上述7点基本具备,可惜现在因为项目需要,做管理方面工作!
如何判断自己是否具有成为一名优秀程序员的潜质 -
摸爬滚打NO1:
链接已经失效
Eclipse添加JSEclipse 插件(js插件) -
younglibin:
看了以上7条, 自己 也不知道是否能够对上, 感觉没一点都有那 ...
如何判断自己是否具有成为一名优秀程序员的潜质
A、采用subclass元素的继承映射:
采用这种方式,整个继承继承树的所有实例都将保存在同一个表内,因为将父子类的实例全部保存在同一个表内,需要在该表中额外增加一列:使用该列来区分每一行记录到底是哪个类的实例——这个列被称为辨别者
使用subclass来映射子持久化类,使用discriminator元素类映射辨者列,每个类映射中都需要指定辨别列的值!
eg:
Preson.hbm.xml:
<!-- 映射Person类 -->
<class name="Person" discriminator-value="普通人">
<!-- 映射标识属性 -->
<id name="id" column="person_id">
<!-- 使用identity的主键生成器策略 -->
<generator class="identity"/>
</id>
<!-- 映射辨别者列 -->
<discriminator column="wawa" type="string"/>
<!-- 如下映射两个基本属性 -->
<property name="name" length="80"/>
<property name="gender"/>
<!-- 下面映射了一个组件属性 -->
<component name="address">
<!-- 映射组件属性的三个基本属性 -->
<property name="detail"/>
<property name="zip"/>
<property name="country"/>
</component>
<!-- 使用subclass元素映射Person类的子类Employee -->
<subclass name="Employee" discriminator-value="雇员">
<!-- 映射两个基本属性 -->
<property name="title" />
<property name="salary" />
<!-- 映射N-1的关联映射 -->
<many-to-one name="manager" column="manager_id"/>
<!-- 映射与Customer类之间的1:N关联 -->
<set name="customers" inverse="true">
<key column="empoyee_id"/>
<one-to-many class="Customer"/>
</set>
<!-- 使用subclass元素映射Employee类的子类Manager -->
<subclass name="Manager" discriminator-value="经理">
<!-- 映射Manager类的基本属性department -->
<property name="department"/>
<!-- 映射Manager类的关联实体:Employee -->
<set name="employees" inverse="true">
<key column="manager_id"/>
<one-to-many class="Employee"/>
</set>
</subclass>
</subclass>
<!-- 使用subclass映射Person的Customer子类 -->
<subclass name="Customer" discriminator-value="顾客">
<!-- 映射Customer类的comments属性 -->
<property name="comments"/>
<!-- 映射Customer和Employee的关联关系 -->
<many-to-one name="employee" column="empoyee_id"/>
</subclass>
</class>
B、采用joined-subclass元素的继承映射:
采用这种方式,父类实例保存在父类列表里,而子类实例则有父类表和子类表共同存储;
用于将子类和父类共有的属性保存在父类表中,而在子类增加的属性,则保存在子类表中;
必须使用key元素映射父子类的共有主键这些共有主键列的列名不必相同;
eg:
Preson.hbm.xml
<!-- 映射Person类 -->
<class name="Person">
<!-- 映射标识属性 -->
<id name="id" column="person_id">
<!-- 使用identity的主键生成器策略 -->
<generator class="identity"/>
</id>
<!-- 如下映射两个基本属性 -->
<property name="name" length="80"/>
<property name="gender"/>
<!-- 下面映射了一个组件属性 -->
<component name="address">
<!-- 映射组件属性的三个基本属性 -->
<property name="detail"/>
<property name="zip"/>
<property name="country"/>
</component>
<!-- 使用joined-subclass元素映射Person类的Employee子类 -->
<joined-subclass name="Employee">
<!-- 必须使用key元素映射父子类的共有主键 -->
<key column="person_id"/>
<!-- 映射Employee类的两个普通属性 -->
<property name="title" not-null="true"/>
<property name="salary" not-null="true"/>
<!-- 映射Employee类与Manager类之间的N-1关联-->
<many-to-one name="manager" column="manager_id"/>
<!-- 映射Employee类与Customer类之间的1-N关联-->
<set name="customers" inverse="true">
<key column="empoyee_id"/>
<one-to-many class="Customer"/>
</set>
<!-- 使用joined-subclass元素映射Employee类的Manager子类 -->
<joined-subclass name="Manager">
<!-- 必须使用key元素映射父子类的共有主键 -->
<key column="person_id"/>
<!-- 映射Manager类的department属性 -->
<property name="department"/>
<!-- 映射Employee类与Manager类之间的1-N关联-->
<set name="employees" inverse="true">
<key column="manager_id"/>
<one-to-many class="Employee"/>
</set>
</joined-subclass>
</joined-subclass>
<!-- 使用joined-subclass元素映射Person类的Customer子类 -->
<joined-subclass name="Customer">
<!-- 必须使用key元素映射父子类的共有主键 -->
<key column="person_id"/>
<property name="comments" not-null="true"/>
<!-- 映射Employee类与Customer类之间的1-N关联-->
<many-to-one name="employee" column="empoyee_id" not-null="true"/>
</joined-subclass>
</class>
C、采用union-subclass元素的继承映射:
<!-- 映射Person类 -->
<class name="Person">
<!-- 映射标识属性 -->
<id name="id" column="person_id">
<!-- 使用identity的主键生成器策略 -->
<generator class="increment"/>
</id>
<!-- 如下映射两个基本属性 -->
<property name="name" length="80"/>
<property name="gender"/>
<!-- 下面映射了一个组件属性 -->
<component name="address">
<!-- 映射组件属性的三个基本属性 -->
<property name="detail"/>
<property name="zip"/>
<property name="country"/>
</component>
<!-- 使用union-subclass元素映射Person类的Employee子类 -->
<union-subclass name="Employee">
<!-- 映射Employee类的两个普通属性 -->
<property name="title" not-null="true"/>
<property name="salary" not-null="true"/>
<!-- 映射Employee类与Manager类之间的N-1关联-->
<many-to-one name="manager" column="manager_id"/>
<!-- 映射Employee类与Customer类之间的1-N关联-->
<set name="customers" inverse="true">
<key column="empoyee_id"/>
<one-to-many class="Customer"/>
</set>
<!-- 使用union -subclass元素映射Employee类的Manager子类 -->
<union-subclass name="Manager">
<!-- 映射Manager类的department属性 -->
<property name="department"/>
<!-- 映射Employee类与Manager类之间的1-N关联-->
<set name="employees" inverse="true">
<key column="manager_id"/>
<one-to-many class="Employee"/>
</set>
</union-subclass>
</union-subclass>
<!-- 使用union -subclass元素映射Person类的Customer子类 -->
<union-subclass name="Customer">
<!-- 映射Customer的普通属性 -->
<property name="comments" not-null="true"/>
<!-- 映射Employee类与Customer类之间的1-N关联-->
<many-to-one name="employee" column="empoyee_id"
not-null="true"/>
</union-subclass>
</class>
发表评论
-
hibernate 无主键 多表连接 更新数据
2009-12-23 15:23 2249今天遇到一个问题: 客户给了我 3张表; 这三张表 分别是从 ... -
hibernate 没有id属性 怎么更新数据
2009-12-23 14:39 4049今天用hibernate 查了几个 ... -
Hibernate的各种保存方式的区别
2009-10-23 10:03 1024hibernate对于对象的保存提供了太多的方法,他们之间有很 ... -
hibernate映射文件one-to-many元素属性
2009-09-04 17:18 3591单向1——N关联关系的持久化类发生了改变,持久化类里需要使用集 ... -
hibernate映射集合属性
2009-09-02 15:43 1507hibernate映射集合属性通 ... -
hibernate中控制Insert 和 Update 语句的映射属性
2009-08-31 09:36 2956控制Insert 和 Update 语句的映射属性<pr ... -
hibernate映射文件many-to-many元素属性
2009-08-31 08:50 2908N-----N column(可选): 这个元素的外键关键字 ... -
hibernate映射文件property 元素属性
2009-08-31 08:49 3202property 元素 name:映射类属性的名字 ... -
hibernate映射文件many-to-one 元素属性
2009-08-31 08:48 3777many-to-one 元素 属性: name ... -
hibernate映射文件one-to-one 元素属性
2009-08-31 08:47 5832one-to-one 元素 属性: name:映射类 ... -
hibernate映射文件set 元素属性
2009-08-31 08:46 1931set 元素 属性: name:映射类属性的名字 ac ... -
hibernate映射文件id元素属性详解
2009-08-31 08:45 1513id 元素 属性: name: ... -
hibernate映射文件一级子元素详解
2009-08-31 08:44 1576子元素: meta:设置类或属性的元数据属性 subsel ... -
hibernate映射文件class元素属性详解
2009-08-31 08:42 1845class元素 属性: name:持久化类的全名 ta ... -
hibernate映射文件一级子元素属性详解
2009-08-31 08:42 860一级子元素: meta:用于设置类或属性的元数据属性 ty ... -
hibernate映射文件根元素属性详解
2009-08-31 08:40 1229根元素hibernate-mapping 属性: sche ...
相关推荐
本主题将深入探讨"Hibernate继承映射+C3P0代码"的相关知识点。 首先,让我们理解Hibernate的继承映射。在Java中,我们可以创建一个基类,然后派生出多个子类,这种设计模式在数据库中也可以被映射出来。Hibernate...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
《Hibernate继承映射详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。在实际项目中,我们常常会遇到类的继承关系,而Hibernate提供了强大的支持来处理这种继承关系的...
**标题:“Hibernate继承映射(Annotation)详解”** 在Java持久化框架Hibernate中,继承映射是一种关键特性,它允许开发者将对象模型的继承结构映射到数据库的表结构。在传统的面向对象编程中,继承是实现代码复用和...
《Hibernate继承映射详解》 在Java开发中,对象关系映射(ORM)框架如Hibernate大大简化了数据库操作。Hibernate不仅提供了对基本数据类型的映射,还支持复杂的数据结构,如继承关系的映射。本篇文章将深入探讨...
本篇文章将详细探讨Hibernate继承映射的策略,特别是“每个具体类一张表”(Table Per Concrete Class)的映射方式。 在面向对象编程中,继承是常见的代码复用手段,但在关系型数据库中,这种概念并不直接对应。...
本文将详细探讨“Hibernate继承映射的第一种策略:每个类对应一张表”的概念、实现方式以及其优缺点。 首先,我们需要理解Hibernate继承映射的基本策略。在面向对象编程中,类继承是常见的代码复用手段,但在数据库...
【Hibernate继承映射】是Java开发中使用Hibernate框架进行数据持久化时的一种重要技术,它允许我们将复杂的对象模型映射到数据库的表结构上。在实际项目中,我们经常遇到对象之间的继承关系,如抽象类和子类。...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
本篇主要探讨的是Hibernate中的继承映射策略,特别是“每个子类一张表”(Table per subclass)的方式。这种方式也被称为单表继承或多表继承,是Hibernate支持的四种继承映射策略之一。了解并熟练掌握这种映射模式...
### 用Hibernate映射继承关系 #### 14.1 继承关系树的每个具体类对应一个表 在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/...
本篇文章主要探讨的是Hibernate的继承映射策略,特别是“每个类分层结构一张表”(Table per Concrete Class)的方式。这种映射策略是Hibernate提供的多种继承映射方案之一,适用于处理复杂的对象模型。 首先,我们...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本教程主要探讨的是Hibernate中的“继承映射...学习并实践这些例子,有助于巩固对Hibernate继承映射的理解,并提升在实际项目中的应用能力。