【Hibernate】从入门到精通(七)关联映射之多对多映射

通过前两篇Hibernate 一对一,一对多几个映射关系的介绍,还剩下最后一大类:多对多映射。当然还是有单向和双向之分。

单向多对多映射

举例:用户和角色的关系。一个用户可以有多个角色,一个角色可以有多个用户。
实现策略:n:n的关系,一定会有一张第三张表来维护他们的关系。
如图:
这里写图片描述

关键代码:如果是user单向对role 那么则在user的一端加入标签映射。

<set name="roles" table="t_user_role">  
     <key column="user_id"/>  
     <many-to-many class="com.hibernate.Role" column="role_id"/>  
</set>  

二)双向多对多映射

在实际中到底是采用单向映射还是采用双向映射都是根据具体的需求,看是不是需要从一端把另一端加载出来,同时也从另一端把对方加载出来。
实现策略:
两端都添加 many-to-many>的标签映射。不过要注意,两端生成的中间表名称和字段都必须一致。
Role端

<set name="users" table="t_user_role">  
    <key column="role_id"/>  
    <many-to-many class="com.hibernate.User" column="user_id"/>  
</set> 

User端

<set name="roles" table="t_user_role">  
   <key column="user_id"/>  
   <many-to-many class="com. hibernate.Role" column="role_id"/>  
</set> 

总结:

多对多关联映射的实现都比较简单。主要是在实际应用中根据不同的需求看是采取单向还是双向。也注意两端的一致性即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值