Hibernate多对多关系

本文深入探讨了数据库中多对多关系的处理方式,包括创建桥接表进行转换,以及在Hibernate框架下如何直接映射多对多关联。讲解了查询策略,如树形菜单展示和权限菜单加载,同时提供了多对多关系维护的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 数据库的多对多

 1.1 数据库中不能直接映射多对多
  处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多

 注1:数据库多表联接查询
       永远就是二个表的联接查询

       A   B   C  D
          t1   C
               t2 D
                  t3

  注2:交叉连接
  注3:外连接:left(左)/right(右)/full(左右)
       主从表:连接条件不成立时,主表记录永远保留,与null匹配
	   
	   A	B	AB
	   select * from A,B,AB WHERE A.aID=AB.aID and b.bid = AB.bid
	   where 
	   在hibernate中,你只管查询当前表对象即可,
	   hibernate会自动关联桥表以及关联表查询出关联对象

2. hibernate的多对多

  2.1 hibernate可以直接映射多对多关联关系(看作两个一对多) 

查询(用于树形菜单展示)
  当加载一级节点的时候没问题
 加载二级的时候,由于设置的强制加载,同样可以加载所有的二级节点,没问题
 加载三级节点,这时session关闭了,并且默认查出来的节点,是默认采用懒加载
 
  权限菜单加载的两种方式
  		1,一次性将数据库表中的数据全部加载往浏览器返回(用于菜单较少)
 		2,菜单表数据量较大,当出现浏览器卡顿的情况,第一种方式就不再使用。
 		      那么就采用菜单逐级加载一级一级加载

3. 多对多关系注意事项

3.1 一定要定义一个主控方
3.2 多对多删除
3.2.1 主控方直接删除
3.2.2 被控方先通过主控方解除多对多关系,再删除被控方
3.2.3 禁用级联删除(如果你要删除一条数据,那么它会删除掉与这条数据有关系的所有数据,最好不要用级联删除)
3.3 关联关系编辑,不需要直接操作桥接表,hibernate的主控方会自动维护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值