一对多双向关联映射的方法:
在"一"一端:
在集合标签里面使用<key>标签来表明需要在对方的表中添加一个外键指向"一"一端。
<set name="users" order-by="name" cascade="all" inverse="true">
<key column="groupid"/>
<one-to-many class="com.dvnchina.hibernate.User"/>
</set>
在"多"一端:
使用<many-to-one>标签来映射。name值需同实体类中的属性名一致。
<many-to-one name="group" column="groupid"/>
需要注意:<key>标签所指定的外键字段名需要与<many-to-one>标签定义的外键字段名一致,否则便会造成引用数据的丢失!
如果从"一"一端来维护一对多双向关联的关系,hibernate会发出多余的update语句,所以一般地情况下,我们便会从多一端来维护其关联关系!
关于inverse属性:
inverse属性可以被设置到集合标签<set>上,表示在存储双向一对多关联映射的时候,存储的是那一方的关联引用。默认情况下,inverse=“false”,所以,我们可以从一多端或者多一端来维护两者之间的关系;如果我们设置inverse=“true”,则只能通过多一端来维护两者之间的关系。inverse属性可以被用在一对多和多对多双向关联中;
外键不需写进实体类中,写实体类时,"多"的一端写一个"一"的实体属性,"一"的一端写一个"多"的集合属性。注意:inverse属性只是在将数据持久化到数据库的过程中发挥作用.如:
User.java
public class User {
private int id;
private String name;
private Group group;
}
Group.java
public class Group {
private int id;
private String name;
private Set Users;
}
Cascade与inverse解析:
cascade:关联表的连锁反应。
inverse:关联关系的控制方向。
在一对多双向关联映射中,它们都是在"一"的一端的set标签中设置,如在group.hbm.xml中设置:
<set name="users" order-by="name" cascade="all" inverse="true">
<key column="groupid"/>
<one-to-many class="com.dvnchina.hibernate.User"/>
</set>
cascade="all":当"一"端save-update-delete时,若多端为瞬时对象时,先save-update-delete"多"端,而不需多端为持久对象,若没此设置,当一端save-update-delete时所关联的多端必须为持久对象,否则抛出TransientObjectException。
inverse="true" :由于只能在”一”一端配置inverse,所以”一”一端将控制关系给"多"的一端,只能通过多一端来维护两者之间的关系。
由于一对多双向关联映射是和单向一对多,多对一的结合,这里就不在写例子了。
分享到:
相关推荐
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...
在上面的配置中, `<many-to-one>` 标签指定了Person实体与IdCard实体之间的一对一唯一外键关联关系,其中unique="true"指定了多的一端的多重性为一。 Hibernate 一对一唯一外键关联映射的应用 在实际应用中,一对...
在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个子实体(如订单)的情况。在本篇文章中,我们将深入探讨如何实现双向关联的一对多映射,以及在...
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
在Java持久化框架Hibernate中,一对一双向关联映射是一种重要的数据对象关系映射策略,它允许我们在数据库中的两个实体之间建立一对一的关系,并且在Java对象模型中可以从任一侧访问另一侧的对象。这种映射方式增加...
在上述配置中,`<one-to-many>`标签定义了`User`到`Order`的一对多关系,而`<many-to-one>`标签定义了`Order`到`User`的多对一关系。`inverse="true"`意味着`Order`端负责维护关系,即当删除一个`Order`时,其对应的...
在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
在本篇关于MyBatis框架的学习中,我们将深入探讨一对一关联映射和一对多关联映射的概念、配置以及在实际开发中的应用。MyBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,从而...
在Java的持久化框架Hibernate中,双向多对多关联映射是一种常见的数据关系模型,它允许两个实体类之间存在多个实例互相引用的情况。本练习旨在帮助开发者深入理解并熟练运用这种映射方式。通过以下详细讲解,我们将...
在处理复杂的数据库关联关系时,比如一对一、一对多、多对一、多对多等,Mybatis提供了灵活的映射机制。本篇将详细讲解如何在Mybatis中实现一对多关联映射的查询操作。 首先,我们要明确一对多关联映射的基本概念。...
一、一对一(one-to-one)与一对多(one-to-many)关系 1. 一对一关系: 在现实世界中,如一个人只有一个身份证,这就是典型的"一对一"关系。在Hibernate中,可以通过@OneToOne注解实现。这种关系通常需要使用外键...
在实际的项目开发中,数据库中的表与表之间经常存在各种关联关系,比如一对一(One-to-One)、一对多(One-to-Many)和多对多(Many-to-Many)关系。本篇文章将重点讲解如何在 MyBatis 中实现一对一的关联映射。 一...
在Java的持久化框架Hibernate中,一对一(One-to-One)关系是对象之间的关联类型之一,它代表了两个实体之间存在唯一的对应关系。本篇将详细讲解如何使用Hibernate实现一对一唯一外键(Unique Foreign Key)关联映射...
关联映射的本质: 将关联关系映射到数据库,所谓的...<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one> 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致
2. **在子类映射文件中定义多对一关联** 在子类(如“课程”)的映射文件中,使用`<many-to-one>`元素来表示多对一的关系。`class`属性指定父类的全限定类名,`column`属性对应父类在子类表中的外键字段。 ```xml...
标题中的“hibernate_1700_one2many_many2one_bi_crud(5)”指的是一项关于Hibernate框架的教程,重点在于介绍一对多(One-to-Many)和多对一(Many-to-One)双向关联关系的创建、读取、更新和删除(CRUD)操作。...
在`hibernate_many2one`目录中的映射文件(可能是`.hbm.xml`格式)也需要相应的配置。对于`Employee`类,映射文件可能会包含以下内容: ```xml <!-- ... --> <many-to-one name="department" class=...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
本知识点将深入探讨Hibernate中的双向多对多关联映射,并通过XML配置文件进行设置。 在关系型数据库中,多对多(Many-to-Many)关系是两个表之间的一种复杂关联,表示一个实体可以与多个其他实体相关联,反之亦然。...