对bibernate中inverse的理解

首先明确一点,inverse(控制反转)属性设置的意义只存在一对多,多对多这些含有集合的对应关系中(双向关联)!就拿Dept,Emp例子来说吧!

dept对象中有Emp对象的引用(Set<Emp> emps),Emp对象中有dept对象的引用(也就是双向关联)!按照数据建表的三大范式,为了减少冗余数据,emp表中必定有一列是指向dept的(dept_id),而dept表中则没有emp的数据。那么问题来了,hibernate管理这些表的时候,碰到dept_id这列的时候该怎么维护呢?是按照dept来维护还是emp来维护呢?所以就出现了inverse这一属性。在dept.hbm.xml文件中配置emps属性时

  <set name="emps" inverse="false">
<span style="white-space:pre">	</span><!-- 对象关系联系的列 --!>
  <span style="white-space:pre">	</span><key column="dept_id"></key>
     <one-to-many class="....Emp />
 </set>
inverse属性如果不设置,默认为false,即不控制反转,意思就是仍然由本对象,也就是one的一端(Dept)来控制关联关系,即Dept发生改变时,才会修改数据库中相关联的值(dept_id)。如果改为true,则控制反转,由many端(Emp)控制关联关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值