首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate单、双向联系关系与inverse属性

2012-10-24 
Hibernate单、双向关联与inverse属性set nameusers cascadeall inversetruekey columnroomid

Hibernate单、双向关联与inverse属性
<set name="users" cascade="all" inverse="true">
<key column="roomid"></key>
<one-to-many column="roomid" class="Room">
</many-to-one>


1对多,多对1双向关联,通过inversed=ture 来实现控制关系的反转,由从表来进行外键的维护

对比:
使用双向关联执行三句SQL的原因在于:插入room表后,需要插入根据一对多关联的userinfo表,但是插入userinfo表的前提是session.save(room);,也即通过Room实体来维护二者之间的关系。这也就意味着Room实体需要通过自身包含的UserInfo实体一一更新其外键,达到关联的目的。

而inverse属性就提供了另外一个更好的做法,它将关联关系反向交给UserInfo实体来完成,这也就意味着虽然通过session.save(room);来执行插入,但是却是由UserInfo实体来维护二者之间的关系。
这样的SQL语句在批量插入userinfo表时效率高了许多,是双向关联中效率最高的一种插表方式
结语

单向关联的功能比双向关联要弱,而且单向关联在操作数据库表时总是会执行三句SQL。因此在一般设计和实现中,通常应该优先选择使用双向关联。而使用双向关联时,inverse属性也是不能忽视的一个重点。通过多端来控制外键值的插入是值得推荐的。

热点排行