`
gaofen100
  • 浏览: 1228707 次
文章分类
社区版块
存档分类
最新评论

Hibernate的对象关系映射(5)

 
阅读更多

2.3多态性

2.3.1 3种继承策略

(1) 共享一个数据表

利用子类之间识别字段来区分。

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<hibernate-mappingpackage="com.weportal.container">
<classname="Container"abstract="true"table="CONTAINER"where="size&lt;3000">
<idname="containerId">
<generatorclass="hilo"/>
</id>
<discriminatorcolumn="CONTAINER_TYPE"type="string"/>
<propertyname="size"/>
<propertyname="name"/>
<propertyname="description"/>

<subclassname="Box"discriminator-value="BOX">
<propertyname="height">
</property>
<propertyname="length"/>
<propertyname="width"/>
</subclass>

<subclassname="Bottle"discriminator-value="BOTTLE">
<propertyname="diameter"/>
<propertyname="height"/>
</subclass>

</class>
</hibernate-mapping>

(2) 每个类一个数据表

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<hibernate-mappingpackage="com.weportal.container">
<classname="Container"table="container_type2">
<idname="containerId"type="string">
<generatorclass="hilo"></generator>
</id>
<propertyname="size"></property>
<propertyname="name"></property>
<propertyname="description"></property>
<joined-subclassname="Box"table="box_type2">
<keycolumn="containerId"></key>
<propertyname="height"></property>
<propertyname="length"></property>
<propertyname="width"></property>
</joined-subclass>
<joined-subclassname="Bottle"table="bottle_type2">
<keycolumn="containerId"></key>
<propertyname="diameter"></property>
<propertyname="height"></property>
</joined-subclass>
</class>
</hibernate-mapping>

(3) 每个子类一个数据表

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<hibernate-mappingpackage="com.weportal.subselect">
<classname="Box"table="Box_type3">
<idname="id">
<generatorclass="hilo"/>
</id>
<propertyname="size"column="size"/>
<propertyname="name"column="name"/>
<propertyname="description"column="description"/>
<propertyname="width"column="width"/>
<propertyname="length"column="length"/>
<propertyname="height"column="height"/>
</class>
<classname="Bottle"table="Bottle_type3">
<idname="id">
<generatorclass="hilo"/>
</id>
<propertyname="size"column="size"/>
<propertyname="name"column="name"/>
<propertyname="description"column="description"/>
<propertyname="diameter"column="diameter"/>
<propertyname="height"column="height"/>
</class>
</hibernate-mapping>

2.3.2 多重继承

可用第一种和第二种策略实现。

2.3.3 联合子类

在hibernate3.0中,除了使用subclass和joined-subclass支持多态外,还可以使用union-subclass来建立联合子类。

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<hibernate-mappingpackage="com.weportal.unionsubclass"default-access="field">
<classname="Person">
<idname="id">
<generatorclass="hilo"/>
</id>
<propertyname="name"/>

<union-subclassname="Programmer">
<propertyname="language"/>

</union-subclass>

<union-subclassname="Player">
<propertyname="style"/>
</union-subclass>

</class>
</hibernate-mapping>

union-subclass元素也可以嵌套来支持多重继承关系。例如dbprogrammer extends programmer。

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<hibernate-mappingpackage="com.weportal.unionsubclass"default-access="field">
<classname="Person">
<idname="id">
<generatorclass="hilo"/>
</id>
<propertyname="name"/>

<union-subclassname="Programmer">
<propertyname="language"/>
<union-subclassname="DBDesigner">
<propertyname="platform"></property>
</union-subclass>
</union-subclass>

<union-subclassname="Player">
<propertyname="style"/>
</union-subclass>

</class>
</hibernate-mapping>

分享到:
评论

相关推荐

    Hibernate对象关系映射

    Hibernate对象关系映射一对多 很基础等文档

    hibernate对象关系映射实例

    标题“Hibernate对象关系映射实例”表明我们将探讨的是使用Hibernate框架进行对象关系映射(ORM)的实际应用。ORM是将数据库表结构映射为Java类对象的一种技术,它使得开发者可以使用面向对象的方式来操作数据库,而...

    基于Java的Hibernate对象关系映射框架设计源码

    该项目是基于Java的Hibernate对象关系映射框架设计源码,包含11786个文件,其中Java源文件10296个,XML配置文件794个,SQL脚本235个,AsciiDoc文档71个,HTML文件60个,CSS样式表59个,JavaScript脚本59个,属性文件...

    hibernate对象关系映射案例demo

    **hibernate对象关系映射案例demo** 在Java开发领域,对象关系映射(ORM)是一种将数据库中的数据与程序中的对象进行关联的技术,它极大地简化了数据操作。Hibernate作为一款流行的ORM框架,使得开发者无需关注底层...

    Hibernate 对象关系映射

    本人在厦门邦初培训时候用的ppt 快速入门文档 内容: 建立一对多的关联关系域模型 建立一对多的参照关系的模型 映射一对多关联关系 通过hibernateAPI级联操作关联对象 其它关系的映射:一对一,多对多

    对象-关系映射—Hibernate 培训 (中文)

    对象-关系映射—Hibernate 培训 (中文) 目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration) 四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳...

    基于Java语言的Hibernate对象关系映射技术课程设计源码

    该项目是一个基于Java语言的Hibernate对象关系映射技术课程设计源码,共计48个文件,包括24个JAR包文件、13个XML配置文件、8个Java源文件、2个Git忽略文件以及1个Idea项目文件。该课程设计旨在让学生深入理解对象...

    hibernate的关系映射

    在Java编程领域,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的交互转化为简单的API调用。关系映射是Hibernate的核心特性之一,它允许我们将复杂的数据库结构与...

    hibernate关联关系映射

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而简化了数据访问层的编程。"hibernate关联关系映射"是Hibernate的核心概念之一,它定义了如何...

    JAVA数据类型与Hibernate的类型映射

    在Java编程语言中,...这涉及到对Java基本类型、复杂类型以及自定义对象的映射,还包括对数据库NULL值的处理、对象关系映射以及工具的使用策略。熟悉这些知识,可以帮助开发者更高效地利用Hibernate进行数据持久化。

    hibernate的多种映射关系

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,消除了直接编写 SQL 的需要。在 Hibernate 中,映射关系是将数据库表与 Java 类之间的关联方式,使得对象模型可以与关系...

    对象/关系映射

    对象/关系映射 —Hibernate 对象/关系映射 —Hibernate 对象/关系映射 —Hibernate

    Hibernate关系映射

    在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者将数据库操作转化为面向对象的方式,极大地简化了数据持久化的复杂性。"多对一"关系映射是Hibernate支持的四种基本关联类型之一,包括一...

    Hibernate教程09_关系映射之组件映射

    Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,它允许开发人员以面向对象的方式处理数据库操作,极大地简化了数据层的开发。组件映射是Hibernate中的一种高级映射策略,用于将一个类的属性组织成一个...

    开源对象关系映射框架Hibernate知识培训

    标题和描述都在强调"开源对象关系映射框架Hibernate知识培训",这意味着主要内容将围绕Hibernate这一框架,探讨如何进行对象关系映射(ORM)以及相关的学习和应用。 **对象关系映射(ORM)** 对象关系映射(Object...

    Hibernate继承关系映射.pdf

    标题:“Hibernate继承关系映射.pdf” 描述:“简明扼要地介绍了Hibernate中继承关系的映射方式,深入探讨了三种不同的映射策略及其优缺点,同时解析了多态查询的概念。” 知识点: ### Hibernate继承关系映射...

    hibernate集合的映射

    在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象的集合属性上,以便实现对象关系映射(ORM)。本文将深入探讨Hibernate中的四种主要集合映射类型:Set、List、Array和Map,以及它们在实际...

    hibernate中的对象关系模型

    在Java持久化框架Hibernate中,对象关系模型(Object-Relational Mapping,ORM)是将数据库中的数据映射到Java对象的技术。它使得开发者能够用面向对象的方式来操作数据库,简化了数据库编程的过程。以下是对...

Global site tag (gtag.js) - Google Analytics