Hibernate一对多单向关联和双向关联映射方法及其优缺点
本文由发表于7年前 | J2EE | 暂无评论 |  被围观 13,205 views+

一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同。
它们的区别在于维护的关系不同:

一对多关联映射是指在加载一的一端数据的同时加载多的一端的数据

多对一关联映射是指在加载多的一端数据的同时加载一的一端的数据

而单向一对多关联映射是在一的一端维护关系的,具有以下的缺点:

必须先保存多的一端后才可以保存一的一端,所以在保存多的一端时多的一端不知道一的一端是否存在相应的数据,所以只能将维护的关系字段设置为null,如果为非空则无法保存。因为是一的一端维护关系,所以在保存一的一端时,会发出多余的update语句维护多的一端的外键关系。

下面举例说明配置一对多的单向关联和双向关联的映射方法:

涉及到的一端和多端的类结构参考这篇文章:Hibernate一对多关联映射的配置及其级联删除问题

一对多双向关联映射的配置(可参考上面提供的文章):

在一的一端的集合上采用<key>标签进行映射:

<set name="quesion" inverse="true" cascade="delete">
	<key column="question_type_name"/>
	<one-to-many class="Question"/>
</set>

在多的一端加入一个外键private QuestionType questionType; 采用<many-to-one>标签进行映射:

<many-to-one name="questionType" column="question_type_name"/>

一对多双向关联映射一般让多的一端维护关系,所以需要设置inverse属性为true,表示本段不维护关系,而交给另一端维护,既是多的一端。同时也可以使用设置cascade进行级联操作,如上面一篇文章的级联删除设置:cascade=”delete”,表示删除一的一端的同时删除关联的多的一端的所有数据。

一对多单向关联映射:

一对多单向关联映射 多的一端Question不需要加入外键private QuestionType questionType; 只需要在一的一端的集合上采用<key>标签进行映射,映射代码如下:

<set name="quesion" inverse="true" cascade="delete">
	<key column="question_type_name"/>
	<one-to-many class="Question"/>
</set>
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/hibernate-one-to-many-unidirectional-and-bidirectional-association-mapping-method-and-its-advantages-and-disadvantages.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 5/28
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 Struts2的一个和多个文件上传的实现 2011/5/8
2 Java基础笔记 – 枚举类型的使用介绍和静态导入 2011/10/31
3 【转】在危机的边缘上 马斯克如何看待失败? 2013/11/4
4 Java Web笔记 – Sessoin的使用 2011/11/12
5 HighPay Zoom博客系统搭建说明 2016/5/3
6 chrome插件编写中需要了解的几个概念和一些方法 2013/6/5
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.