上面两篇文章说了一对一关联映射和一对多关联映射,下面该说最后一种关联映射,多对多关联映射,以User-Role为例:
![](https://img-blog.csdn.net/20151030091144506?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151030091157503?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1
)
User
--Role
(多对多,单向关联,关系维护在关系表t_user_role端)
i、Role
<hibernate-mapping>
<class name="com.tgb.hibernate.Role" table="t_role"><id name="id"><generator class="native" /></id><property name="name" /></class></hibernate-mapping>
ii、User
<hibernate-mapping>
<class name="com.tgb.hibernate.User" table="t_user"><id name="id"><generator class="native" /></id><property name="name" /><set name="roles" table="t_user_role"><key column="user_id" /><many-to-many class="com.tgb.hibernate.Role" column="role_id" /></set></class></hibernate-mapping>
2)User--Role(多对多,双向关联),其余关系不变
i
、
Role
<hibernate-mapping>
<class name="com.tgb.hibernate.Role" table="t_role"><id name="id"><generator class="native" /></id><property name="name" /><set name="users" table="t_user_role"><key column="role_id" /><many-to-many class="com.tgb.hibernate.User" column="user_id" /></set></class></ hibernate-mapping >
总结:通过以上的总结,关系的维护其实就是在某一端或两端加上关联,当进行查找的时候,通过关联关系可以找到相对应的数据。其实和我们平时理解的实体对象模型的设计是一样的。一对一关系,关系随便放到谋一端就可;一对多则放到多的一端,多对多则就单独出来,形成一张关系表进行维护。