关联映射的本质:
* 将关联关系映射到数据库,所谓的关联关系是对象模型在内存中的一个或多个引用
多对一(many-to-one)
<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one>中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致。
我用user和group做示例:
多个user对于一个group
user.hbm.xml的写法:
<hibernate-mapping>
<class name="com.simlink.data.ho.User" table="t_user">
<id name="id">
<generator class="native" />
</id>
<property name="name">
<many-to-one name="group" column="groupid">
</calss>
</hibernate-mapping>
cascade(级联)
<many-to-one>有一个重要的属性cascade(级联)
* 级联的意思是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作。
* 总共可以取值为:all、 none、 save-delete、 delete
* all代表所有情况下都执行级联操作
* none 代表所有情况下都不执行级联操作
* save-delete 代表只有在保存和删除的情况下才执行级联操作
* delete 代表只有在删除的情况下才执行级联操作
一对一(one-to-one)关联映射
有两种策略可以实现一对一的关联映射:
* 主键关联:即让两个对于具有相同的主键值,以表明它们之间的一一对于关系。数据库表不会有额外的字段来维护它们之间的关系,仅通过主键来关联。
* 唯一外键关联:外键关联,本来用于多对一配置,但是如果加上唯一的限制之后,也可以用来表示一对一关联映射。
一对一主键关联--单向
我用person和card做示例:
一个人对于一个身份证,单向关联Person---->Card
一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段被创建
person.hbm.xml的写法:
<hibernate-mapping>
<class name="com.simlink.data.ho.Person" table="t_person">
<id name="id">
<!-- person的主键来源card,也就是共享card的主键 -->
<generator class="foreign">
<param name="property">card</param>
</generator>
</id>
<property name="name">
<!-- one-to-one标签的含义,指示hibernate怎么加载它的关联对象,默认根据主键加载,constrained="true",表明当前主键上存在一个约束,person的主键作为外键参照了card -->
<one-to-one name="card" constrained="true">
</calss>
</hibernate-mapping>
一对一主键关联--双向
一个人对应一个身份证,一个身份证对应一个人,双向关联Person<---->Card
person.hbm.xml的写法不变,需要改一下card.hbm.xml
card.hbm.xml的写法:
<hibernate-mapping>
<class name="com.simlink.data.ho.Card" table="t_card">
<id name="id">
<generator class="native" />
</id>
<property name="cardid">
<one-to-one name="person">
</calss>
</hibernate-mapping>
一对一唯一外键关联映射是多对一关联映射的特例,就是将外键限制为唯一。
一对一唯一外键关联--单向
在person中多了一个外键cardno,引用card的主键,设置person里的cardid唯一
user.hbm.xml的写法:
<hibernate-mapping>
<class name="com.simlink.data.ho.Person" table="t_person">
<id name="id">
<generator class="native" />
</id>
<property name="name">
<many-to-one name="card" unique="true">
</calss>
</hibernate-mapping>
一对一唯一外键关联--双向
在card的配置中指明card连接到person的cardid字段(默认会连person的主键)
person.bbm.xml的写法同上。
card.hbm.xml的写法:
<hibernate-mapping>
<class name="com.simlink.data.ho.Card" table="t_card">
<id name="id">
<generator class="native" />
</id>
<property name="cardno">
<one-to-one name="person" property-ref="cardid">
</calss>
</hibernate-mapping>
分享到:
相关推荐
### Hibernate关联映射总结 #### 一、基础知识 在探讨Hibernate中的关联映射之前,我们需要先理解几个基本概念,这将有助于我们更好地理解和应用这些关联映射。 - **主键**(Primary Key):主键是用来唯一标识一...
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
hibernate开发的关系: one-to-one,many-to-one,many-to-many学习经验总结
本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...
### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...
在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
本教程“Hibernate关联映射.rar”聚焦于Hibernate中的关联映射,特别是多对一和一对多的关系映射,非常适合初学者了解和实践。 首先,我们要理解什么是关联映射。在数据库中,表与表之间存在各种关系,如一对一、一...
本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合关系"、"student与class的多对一"以及"一对多映射"的概念。 首先,让我们理解一下Hibernate中的集合映射。在关系型数据库中,一个实体...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...
总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...
在Java的持久化框架Hibernate中,关联映射是至关重要的概念,它允许我们将数据库中的表关系映射到对象之间的关系。SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...
这可能是测试Hibernate关联映射的一个示例项目或者类。通常,这样的测试会包含各种关联映射的实例,如实体类的定义,配置文件或注解,以及测试用例,用于验证关联映射是否按预期工作。 **详细知识讲解:** 1. **一...
本文将深入探讨“Hibernate关联映射中的Many-to-One关系”。 Many-to-One关联是现实世界中常见的关系类型,比如一个学生可以对应多个课程,而一个课程可能被多个学生选修。在数据库中,这通常表现为一对多(One-to-...
总结来说,Hibernate的One-to-One关联映射提供了一种方便的方式来处理一对一关系,通过源码分析我们可以更深入地理解其内部机制。在实际开发中,根据业务需求合理配置`@OneToOne`注解,可以提高代码的可读性和数据库...
在深入探讨Hibernate关联关系映射分类之前,我们首先简要回顾一下Hibernate框架的基本概念。Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的...