hibernate中的关联映射图解 ---- 一对多



        hibernate中的关联映射图解 ---- 一对多

           

一对多关联映射利用了多对一关联映射原理:

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一。

一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多。

总结:由上可以看出,一对多和多对一的映射策略是一样的,只是站的角度不同,维护关系方不同罢了。

 

1. 单向

java文件:

   

hbm.xml文件:

测试代码:

保存

加载

 

2. 双向

相对于上面的单向,只需要修改Student端

java文件:

hbm.xml文件:

注意:在一对多的双向关联关系映射中,我们一般会将关联关系维护权交由多的一方来维护,所以我们需要在一的一方加入关系翻转的属性,如下

 

总结:

一对多双向关联映射:

     1. 在一的一端的集合上使用<key>,在对方表中加入一个外键指向一的一端。

     2. 在多的一端采用<many-to-one>

注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段会出错,如果在一的一端维护一对多关联关系,hibernate会发出多于的update语句,所以我们一般在多的一端来维护关联关系。

inverse属性:

        inverse主要用在一对多和多对多双向关联关系上,inverse可以被设置到集合标签<set>上,默认inverse为false,所以我们可以从一的一端和多的一端来维护关联关系,如果设置inverse为true,则我们只能从多的一端来维护关联关系,注意:inverse属性只影响数据的存储,也就是持久化,加载没有影响。

inverse和casccade

       1. inverse是关联关系的控制方向。

       2. cascade是操作上的连锁反应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值