一对多是比较普遍的映射关系,比如班级与同学关系,消费者预订单关系,某个人的留言......
一对多:从班级的角度来看一个班级可以有很多个同学。
多对一:从学生的角度来看多个同学可以对应一个班级。
根据实际情况也有不同的映射方式:
一."一方"的java类中含有"多方"对象的set集合,而"多方"的java类中含有"一方"的id而不是一个对象。
java类图:
数据库表设计,在message表中定义一个外键关联student:
student.hbm.xml中:
<!--
将 lazy 设置为false 表面查询一个student的时候查询该student的所有message
lazy默认为 true
-->
<set name="messages" lazay="false"> <key column="stu_id"></key> <one-to-many class="showGoal.model.Target"/> </set>
message.hbm.xml中无需特别指定。
二."一方"的java类中含有"多方"对象的set集合,而"多方"的java类中含有"一方"的i一个对象。
java类图:
数据库表的设计不变:
student.hbm.xml:
同上:
<set name="messages" lazay="false"> <key column="stu_id"></key> <one-to-many class="showGoal.model.Target"/> </set>
message.hbm.xml:
<many-to-one name="student" class="xxx.student" column="stu_id" cascade="save-update"> </many-to-one>
三.这种情况比较特殊就是自身的一对多关联。比如message与message的回复,就是自身的一对多关联
<set name="messagesReply" cascade="all" inverse="true"> <key column="id"></key> <one-to-many class="xxxx.Message"/> </set> <many-to-one name="parentMeeage" class="xxxs.Category" column="parent_id"> </many-to-one>
注:1.<set>元素的lazy属性,默认为true。表示加载student 的时候不会加载student的message集合。
false,则相反。
2.<set>元素的cascade属性:
是用来说明数据库中两个表之间相互关系(一对一,一对多,多对多)中,当对主对象进行某种操作时, 是 否对其关联的从对象也作类似的操作(比如有对象 Department和Employee,它们之间是一对多的关系,当保存Department时,其对应的Employee是否也相应的保存),常见的 级联(Cascade)有:
(1)none:在保存,删除或修改当前对象时,不对其附属对象(关联对象)进行级联操作。它是默认值。
(2)save-update:在保存,更新当前对象时,级联保存,更新附属对象(临时对象,游离对象)。
(3)delete:在删除当前对象时,级联删除附属对象。
(4)all:所有情况下均进行级联操作,即包含save-update和delete等等操作。
(5)delete-orphan:删除此对象的同时删除与当前对象解除关系的孤儿对象(仅仅使用于一对多关联关系 中)。
当然也可以在数据库中定义外键的时候设置删除时,更新时相应的操作来等效的实现cascade的操作
小生菜鸟一个,如果大神们对博客有什么意尽管说出来,虚心接受。我会很高兴的哦 谢了
相关推荐
总之,Hibernate的多对多关联映射是解决复杂关系数据库设计的关键技术之一。通过合理的配置和使用,开发者可以轻松管理实体之间的多对多关系,提高开发效率。理解并熟练掌握这部分知识对于提升Java企业级应用开发...
这种关联关系可以是单向的,也可以是双向的,而这里的"hibernate关联关系之一对一双向关联"着重讨论的是后者。双向关联意味着两个实体类都可以直接访问对方,提供了更方便的数据操作。 在Hibernate中,一对一双向...
总结来说,Hibernate的关联关系配置涵盖了从一对一到多对多的各种情况,提供了丰富的选项来满足不同业务需求。理解并熟练掌握这些关联关系及其配置,能帮助开发者更高效地进行数据操作,提升开发效率。在实际应用中...
### Hibernate关联关系配置详解 #### 一、一对多与多对一关系配置 在软件开发过程中,实体之间的关联关系是常见的需求之一。其中,“一对多”与“多对一”的关系尤为常见,这类关系通常用来表示实体之间的层级或...
9. Hibernate 一对一外键双向关联、主键双向关联、连接表双向关联、一对多外键双向关联、一对多连接表双向关联、多对多双向关联: 这些关联方式与单向关联类似,区别在于两个实体类都知道彼此的关联。在双向关联中...
【hibernate之一对多配置demo】:在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互。本教程主要关注Hibernate中的一对多关系配置,并通过XML来实现,同时也涵盖了...
"hibernate_many2many_2"这个文件名可能是指一个关于Hibernate多对多关联的示例或教程的第二部分,可能包含配置文件、Java实体类、映射文件以及相关的测试代码。 **详细知识点:** 1. **实体类定义**:在Hibernate...
- Hibernate通过XML配置文件或注解来设置一对一的关联。在XML配置文件中,我们需要在`<one-to-one>`元素中指定关联的实体和外键字段。在注解方式下,使用`@OneToOne`注解并指定`@JoinColumn`或`@MapsId`。 5. **懒...
在Java的持久化框架Hibernate中,"多对一"关联关系是一种常见的对象关系映射(ORM)设计,它表示一个实体(子项)可以与多个其他实体(父项)相关联,而每个父项可能被多个子项引用。在数据库层面,这通常对应于一个...
在Java的持久化框架Hibernate中,一对一(One-to-One)关系是对象之间的关联类型之一,它代表了两个实体之间存在唯一的对应关系。本篇将详细讲解如何使用Hibernate实现一对一唯一外键(Unique Foreign Key)关联映射...
在Java的持久化框架Hibernate中,关联映射是核心概念之一,它允许对象之间的关系在数据库层面得以体现。本文将详细解析四种基本的关联类型:一对一(OneToOne)、多对多(ManyToMany)、一对多(OneToMany)和多对一...
理解并熟练掌握Hibernate中的关联关系映射配置是每个Java开发者必备的技能之一。通过正确的注解和配置,我们可以轻松地在对象和数据库表之间建立对应关系,实现数据的高效存取。这不仅简化了代码,还提高了开发效率...
本篇文章将深入探讨Hibernate中的一对多和多对多关系映射。 首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...
在Hibernate中,一对一关联的配置主要通过注解或XML配置文件完成。对于双向关联,我们需要在两个实体类中分别设置相应的属性和关联注解。 在实体类A中,我们将添加一个类型为B的属性,并使用`@OneToOne`注解来指定...
在" Hibernate教程07_关系映射之一对一双向主键关联"中,我们将学习如何设置这种关联。首先,我们需要创建两个实体类,例如`Employee`和`Department`。在每个类中,我们都需要定义主键字段,并用`@Id`注解标记。然后...
本篇文章主要探讨的是Hibernate中的一对多关联映射,这是一种常见的对象关系映射(ORM)配置,用于表示一个实体与多个其他实体之间的关系。 在关系型数据库中,一对多关联是指一个表(父表)中的记录可以对应另一个...
Hibernate 的配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。下面我们将详细介绍 Hibernate 配置文件的结构和内容。 一、hibernate.cfg.xml 文件 hibernate.cfg.xml 文件是 Hibernate 的基本配置...
在Java的持久化框架Hibernate中,实体关联是其核心特性之一,它允许我们在数据库中建立对象之间的关系,以便更好地模拟真实世界的数据模型。本教程“传智播客hibernate教程_保存多对一关联关系的更进一步分析”深入...