【Hibernate步步为营】--多对多映射详解

本文深入探讨了Hibernate中的多对多映射,包括单向和双向映射。在单向多对多关系中,重点介绍了User.hbm.xml和Role.hbm.xml的映射配置,以及User和Role类的编写。而对于双向多对多映射,文章指出需要在两端添加集合映射以实现关系的双向维护。最后,总结了多对多映射的关键配置和操作要点。
摘要由CSDN通过智能技术生成

        上篇文章详细讨论了一对多映射,在一对多映射中单向的关联映射会有很多问题,所以不建议使用如果非要采用一对多的映射的话可以考虑使用双向关联来优化之间的关系,一对多的映射其实质上是在一的一端使用<many-to-one>标签来标明它们之间的关系,另外还需要在一的一端的对象中使用set标明集合映射。


一、单向多对多


        仍然按照前几篇的文章格式来讨论,首先来看对象之间的关系,单向的多对多关系是两个对象之间发生的,比如在人和职位之间,一个人可以有多个职位,而且一个职位也可以由多人来负责,所以它们之间就形成了多对多的关系,另外这种单向性是指只能在一端来查询获取另一端的内容。另外因为是多对多之间的关系,所以在生成关系模型时会生成对象之间的关联表,实际它们之间的关系的是关联表,具体的对象模型如下:


       上面已经说过多对多的关系会生成一个关联表,在关联表中来维护之间的关系,所以对应的关系模型中会有一个关系表,这个关系表中存放着两个关系表的主键,并且关系表的主键是另外两张表的主键的组合,如下图:



   1.1、映射


        上面的关系模型中会生成一个关系表,所以在映射中要编写对应的属性,因为是单向的关联关系所以主要的映射关系是在映射的原方向添加的,对应的上面的关系模型上就是在T_user中添加多对多映射的关系。


    1.1.1 User.hbm.xml

        文件中要使用<many-to-many>标签,并且在标签中添加上对应的列关系,因为你要让两个对象中都要清楚它们之间的映射是如何使用的,并且在生成的关系表中哪一列是对应的自己的外键,所以要在该标签中指明,另外在<set>标签中添加table属性会指明要生成新表,下面的示例中添加了t_user_role,所以会生成新的关联表。

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.src.hibernate.User" table="t_user">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<set name="roles" table="t_user_role">
			<key column=&
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值