本文只简略的介绍关系,详细标签描述参考http://blog.csdn.net/tanxiang21/article/details/8034105
一对一
Monkey.hbm.xml
<one-to-one name="address"
class="mypack.Address"
cascade="all"
/>
Address.hbm.xml
<class name="mypack.Address" table="ADDRESSES" >
<id name="id" type="long" column="ID">
<generator class="foreign">
<param name="property">monkey</param>
</generator>
</id>
<one-to-one name="monkey"
class="mypack.Monkey"
constrained="true"
/>
</class>
说明:Address constrained="true" generator class="foreign"
ADDRESSES表ID主键做为外键,两表表共享OID
显然,Monkey 与Address存在主从关系。
数据库一对一,还有映射继承关系的 参考http://blog.csdn.net/tanxiang21/article/details/8045851
多对多
Monkey 和Teacher是多对多,Learning是中间表
【组件型式】多对多形式:
<hibernate-mapping >
<class name="mypack.Monkey" table="MONKEYS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" column="NAME" type="string" />
<set name="learnings" lazy="true" table="LEARNING" >
<key column="MONKEY_ID" />
<composite-element class="mypack.Learning" >
<parent name="monkey" />
<many-to-one name="teacher" class="mypack.Teacher" column="TEACHER_ID" not-null="true"/>
<property name="gongfu" column="GONGFU" type="string" not-null="true" />
</composite-element>
</set>
</class>
</hibernate-mapping>
说明:中间表LEARNING映射Learning类以集合组建形式属于Monkey类,然后和Teacher存在多对一的关联
Learning类共享Monkey类OID,操作时候一样是相互保存双方,同通常的多对多保存方式。
<composite>标签 和 组成关系<component>标签需区分,映射组成关系:http://blog.csdn.net/tanxiang21/article/details/8130201
<composite>标签 和 值类型集合<set>标签的区分是 里面不是<element>
,映射值类型集合http://blog.csdn.net/tanxiang21/article/details/8134107
【标准】多对多 数据库有中间表,中间表无对应BEAN
<hibernate-mapping >
<class name="mypack.Monkey" table="MONKEYS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" column="NAME" type="string" />
<set name="teachers" table="LEARNING"
lazy="true"
cascade="save-update">
<key column="MONKEY_ID" />
<many-to-many class="mypack.Teacher" column="TEACHER_ID" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping >
<class name="mypack.Teacher" table="TEACHERS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" column="NAME" type="string" />
<set name="monkeys" table="LEARNING"
lazy="true"
inverse="true"
cascade="save-update">
<key column="TEACHER_ID" />
<many-to-many class="mypack.Monkey" column="MONKEY_ID" />
</set>
</class>
</hibernate-mapping>
说明:标准版得多对多,然后JAVA保存相互关联关系时,两边都要设置对方,
注意下inverse,而数据库只发一条修改语句
中间表做BEAN,中间可做个关系属性 一对多 多对一
<hibernate-mapping >
<class name="mypack.Monkey" table="MONKEYS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" column="NAME" type="string" />
<set name="learnings" lazy="true" inverse="true" cascade="save-update">
<key column="MONKEY_ID" />
<one-to-many class="mypack.Learning" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping >
<class name="mypack.Learning" table="LEARNING" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="gongfu" column="GONGFU" type="string" />
<many-to-one name="monkey" column="MONKEY_ID" class="mypack.Monkey" not-null="true" />
<many-to-one name="teacher" column="TEACHER_ID" class="mypack.Teacher" not-null="true" />
</class>
</hibernate-mapping>
<hibernate-mapping >
<class name="mypack.Teacher" table="TEACHERS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" column="NAME" type="string" />
<set name="learnings" lazy="true" inverse="true" cascade="save-update">
<key column="TEACHER_ID" />
<one-to-many class="mypack.Learning" />
</set>
</class>
</hibernate-mapping>
说明:其实就是多对多,变为了 一对多 多对一 ,注意可以级联保存,无限级联~ 无限级联~
备注:文章示例代码来源:《Hibernate逍遥游记》孙卫琴,可能有部分改造,解释部分纯属个人经验。
分享到:
相关推荐
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...
《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
本资源“Hibernate实体映射”提供了一个深入理解这一关键概念的机会,通过实例代码和教程笔记,帮助学习者更好地掌握Hibernate的核心功能。 一、Hibernate实体映射基础 在Hibernate中,实体映射是将Java对象模型与...
《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...
Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。
Hibernate 是一个开源的对象关系映射框架,它允许开发者将Java对象和关系数据库的数据进行映射,从而简化数据库操作。在本篇文章中,我们将深入探讨 Hibernate 的核心概念和使用方法。 首先,创建 Hibernate 项目的...
在深入探讨Hibernate学习笔记第二天的源码之前,我们先来理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为对象模型,大大简化了数据访问层的开发...
**hibernate学习笔记第四天源码解析** 在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们...
### 马士兵Java框架Hibernate学习笔记 #### 一、HelloWorld - **知识点概述**: - **项目搭建**:介绍了如何从零开始搭建一个简单的Hibernate项目。 - **环境配置**:包括了如何配置MySQL数据库、创建必要的表...
**Hibernate学习笔记源码及文档** Hibernate 是一款强大的Java持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库交互。本资源包含了Hibernate的学习笔记、源码分析以及开发流程说明文档...
根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...
【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...
### 马士兵Hibernate学习笔记知识点总结 #### 一、HelloWorld示例 - **目的**:通过简单的示例理解Hibernate的基本使用流程。 - **步骤**: - 创建Java项目`hibernate_0100_HelloWorld`。 - 建立库依赖,包括...
**Hibernate学习笔记与大纲** Hibernate 是一款开源的Java语言下的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发人员可以使用面向对象的方式处理数据,而无需过多关注底层的SQL语句。本笔记将深入...
【尚学堂Hibernate学习笔记】是一份详尽的学习资料,旨在帮助初学者理解并掌握Hibernate这一流行的Java对象关系映射(ORM)框架。该笔记由作者根据马士兵老师的教程整理而成,其中包含了个人的学习注解,使得内容...