hibernate的映射关系网上介绍的人很多。但有没有感觉看完之后就忘掉,或则刚看完还是能记住,可是过一会儿,又搞不清楚哪个表,哪个字段,哪个属性了。IDE可以根据DTD给你提示,但是仔细一看,都是差不多的元素,什么one2many,many2many,什么column,table,IDE可是没有给你提示这些东西是对应哪个的,就算是用IDE生成出来的东西,也经常会出错,需要修改。说了这么多废话,现在切到主题。
我们都知道,hibernate的多对多映射是通过一个链接表的实现的。链接表是纽带。多对多中。两个JAVA对象如何才能表示多对多?我们最容易想到的方式就是在各自的成员变量里面,都包含一个集合(Set),来包含N多个另外一个对象。比如一本书可以有很多读者,这样书这个类里面就定义一个Set来包含N多个读者对象。反之亦然。
其它的我就不罗嗦了,多对多关键就一个Set(当然List等其它情况,类似)。
假设A,B两个类多对多:
在 A.hbm.xml中,有下面一项:
<set name="A中的Set<B>" table="A-B链接表名">
<!--这里不一定是泛型,只是表示说这个Set是放B的 -->
<key column="外键A"/>
<!--
这里的"外键A"就是"链接表"中相对于A的ID,也就是说这个column是在"A-B链接表"中的某一个column ,对应的ID是"A的表"中的ID-->
<many-to-many class="类名B" column="外键B"/>
<!--
这里的"外键B",也是在 "A-B链接表"中的column,对应的ID就是"B的表"中的ID了。
-->
</set>
这只是单向,双向另一个也类似写一下就OK了,对于有些cascade,inverse等,如何设置,就看你自己后面怎么用了,因此就不罗嗦了。
总结:
1、Set --- 含Set的一方,它对应的肯定可以多个。也就是 X to-many类(当然你也可以限制它为唯一的。这里any也有,但应该不常见)
2、Set标签里面key -- "链接表"中的column,对应本类的ID。
3、多对多,Set标签里面是用many-to-many,Set标签里面可没有 X to-one的,否则还要Set来做什么呢。这里的column也是在"链接表"中的列,这么记:与上面key的column那个不同的就是了。
再顺便提一下有时会碰到的情况,在保存时,链接表中的对应数据没有插进去,试着调用一下session.flush(),当然如果是手动提交,我想应该没有这个问题。
表答得比较混乱,见谅了。
分享到:
相关推荐
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)映射是一种常见的关系数据库模型,用于处理两个实体之间复杂的关系。本实例将详细阐述如何在Hibernate中实现多对多映射,并通过源代码和测试程序进行实战演示...
在这个“hibernate 多对多映射实例,学生 选课”项目中,我们将探讨如何使用Hibernate处理多对多关系,以及如何构建一个学生选课的系统。 首先,我们要理解多对多关系。在现实生活中,学生和课程之间就是一个典型的...
本篇主要探讨的是Hibernate中的多对多映射,这是一个复杂但常见的数据库关系,适用于那些实体之间存在多个关联的情况。 一、Hibernate多对多映射基础 多对多映射在数据库中表现为两个表通过一个中间表(或称为连接...
本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...
本项目聚焦于Hibernate中的多对多关系映射,这是一种复杂但常见的数据库关联类型,适用于如用户角色、商品类别等场景。 **一、多对多关系** 在数据库设计中,多对多关系表示两个实体之间存在多个匹配的可能性。...
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
**标题:“Hibernate多对多映射实战”** 在Java领域,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本示例主要聚焦于使用Hibernate处理数据库中的多对多关系,这是一种复杂但常见的关联类型。在关系...
本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一个实际的demo演示它们在增删查改操作中的应用。 首先,我们要理解什么是数据库的关联关系。在数据库设计中,我们经常遇到一种情况,即一个实体可能与...
本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这个过程中,我们将探讨多对多关系的原理,以及如何在Hibernate中通过XML配置文件来定义这种关系。 首先,我们需要理解多对多关系的概念。...
在Java的持久化框架Hibernate中,多对多映射是一种常见的关系映射方式,用于处理两个实体类之间一对多或多对一的关系。在这个例子中,我们看到的是`Team`(团队)与`Member`(成员)之间的多对多关系,通过`Map`数据...
本教程将详细讲解如何使用Hibernate来实现MySQL数据库中的一对多和多对一的映射关系。 ### 一、Hibernate简介 Hibernate是一个开源的ORM框架,它通过XML配置文件或者注解将Java对象映射到关系数据库表,实现了对象...
"自动生成 Hibernate 映射文件和实体类" 自动生成 Hibernate 映射文件和实体类是使用 MyEclipse 工具来实现的,这可以大大提高开发效率,减少开发时间。下面将详细介绍如何使用 MyEclipse 自动生成 Hibernate 映射...
在Java的持久化框架Hibernate中,多对一(Many-to-One)映射是一种常见的关联关系。这种关系表示在一个实体类中可以引用另一个实体类的多个实例,而在被引用的实体类中,每个实例只被一个引用实体类实例引用。本文将...
在这个“hibernate学习入门之一对多实体映射源码”教程中,我们将深入探讨如何在Hibernate中设置和管理一对多的关系。 一、Hibernate简介 Hibernate是Java开发人员用于处理数据库操作的强大工具,通过它,我们可以...
本主题将深入探讨Hibernate中的一对多和多对一映射关系,这两种关系在实际的业务场景中非常常见。 首先,我们来理解一下一对多映射(One-to-Many Mapping)。在数据库设计中,一对多关系意味着一个父记录可以与多...
在Java的持久化框架Hibernate中,单向多对多映射是一种常见的关系映射方式,尤其在处理数据库中两个实体间复杂关联时显得尤为重要。在注解版的Hibernate中,我们不再需要传统的XML配置文件,而是直接在实体类上使用...