一对一关系的实现,其建表策略有两种:
1、唯一外键,是指一方引用另一方的主键,作为外键,并且对引用的外键加唯一约束。
2、共享主键,是指一方引用另一方的主键,作为自身的主键,也是外键。
一、通过实例说明唯一外键的方式映射双向一对一关系
Account和Address是一对一关系,有以下属性:
**Account: Address addr;
**Address:Account acct;
在映射文件Account.hbm.xml中,关系属性addr配置如下:
<one-to-one name="addr" cascade="all"
property-ref="addr"/>
** property-ref表示外键所在的表对应的对象
在映射文件Address.hbm.xml中,关系属性acct配置如下:
<many-to-one name="acct" column="fid"
unique="true" cascade="all"/>
**many-to-one 表示"关联属性"acct体现的是一对多(因为数据库中外键字段代表多),但是实际上acct代表一对一,因此添加unique="true" 的额外约束
**fid 代表表中的外键字段
**unique="true" 代表外键的唯一性
**cascade="all" 代表对任意数据库操作都执行"级联操作"
二、通过实例说明主键共享的方式实现双向一对一映射
同是以Account和Address一对一关系为例,有以下属性:
**Account: Address addr;
**Address:Account acct;
在映射文件Account.hbm.xml中,关系属性addr配置如下:
<one-to-one name="addr" cascade="all" />
在映射文件Address.hbm.xml中,关系属性acct主要配置如下:
<id name="oid">
<generator class="foreign">
<param name="property">acct</param>
</generator>
</id>
<one-to-one name="acct" cascade="all"
constrained="true"/>
**Address的主键值由Account的主键值而来
** <generator class = "foreign">是指oid的值是由关联表的主键值而来。
** <param name="property">acct</param>是指关联表是acct 属性的类型所对应的表
** constrained="true" 是指acct属性所在类对应表的主键对应acct属性类型所对应的关联表的主键
以上只是个人点滴总结,出错处请大家指出,谢谢
分享到:
相关推荐
Hibernate一对多关联映射学习小结 Hibernate是一种流行的Java持久层框架,它提供了强大的对象关系映射(ORM)功能,能够将Java对象与关系数据库中表之间建立映射关系。Hibernate的关联映射是其核心功能之一,可以将...
### 用Hibernate映射继承关系 #### 14.1 继承关系树的每个具体类对应一个表 在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/...
hibernate 映射关系 小结
在 Hibernate 中,关系映射是指如何将 Java 对象模型映射到数据库表及其字段上,这种映射机制是 Hibernate 的核心之一。 #### 二、关系类型 在 Hibernate 中,常见的关系类型包括: 1. **一对一(One-to-One)** ...
### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...
在本篇文章中,我们将对Hibernate框架进行一个较为全面的小结。主要内容包括:Hibernate映射中的Lazy加载策略、Hibernate查询语言(HQL)的使用方法,以及一些基本配置与操作技巧。通过本文的学习,你将能够更加熟练...
【MAPPING Hibernate方法小结】 Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者用面向对象的方式操作数据库。以下是对Hibernate中几种关键概念的详细解释: 1. **对象之间的关系**: - **...
Hibernate是一个开源的对象关系映射(ORM)框架,它为Java应用提供了一种高效、灵活的方式来处理数据库交互。通过Hibernate,开发者可以使用面向对象的方式操作数据库,而无需编写复杂的SQL语句。本文将深入探讨...
Hibernate是一个开源的Java框架,它为对象关系映射(Object Relational Mapping, ORM)提供了一种实现方式,允许Java程序员以面向对象的方式操作数据库。从Hibernate的核心概念、工作原理到其实现细节,Hibernate...
7.3 映射一对多双向自身关联关系 7.4 改进持久化类 7.5 小结 7.6 思考题 第8章 通过Hibernate操纵对象(上) 8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 ...
这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...
4.1.3 **Hibernate映射文件**: 在Hibernate的XML映射文件中,你需要为这个Clob字段指定映射规则,例如: ```xml <property name="summaryClob" type="org.hibernate.type.ClobType"> ``` **CRUD操作**: ...
- **Hibernate的作用**:Hibernate作为一种ORM(对象关系映射)框架,它的核心价值在于简化了Java对象与关系型数据库之间的交互,实现了对象和数据库表之间的自动映射。 #### 二、应用程序的分层体系结构及其在...
这里我们主要讨论SSH项目中的Hibernate部分,它是一个强大的对象关系映射(ORM)框架,使得开发者可以方便地将数据库操作与Java对象模型进行绑定。 1. 实体Bean的配置 在Spring中,配置Hibernate的SessionFactory...
**Hibernate**是一种对象关系映射(Object/Relational Mapping,简称ORM)解决方案,它提供了一种机制,用于将Java对象及其关系映射到关系型数据库中的表及其关系。通过这种方式,开发人员能够更高效地处理数据,...
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不...
- Hibernate映射文件的编写是连接Java对象与数据库表的关键,需要理解对象与关系映射(ORM)的概念。 - 在整个实例学习中,熟悉MyEclipse等集成开发环境的操作对提高开发效率至关重要。 - 理解Hibernate的日志配置...