Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)
一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同。
它们的区别在于维护的关系不同:
一对多关联映射是指在加载一的一端数据的同时加载多的一端的数据
多对一关联映射是指在加载多的一端数据的同时加载一的一端的数据
而单向一对多关联映射是在一的一端维护关系的,具有以下的缺点:
必须先保存多的一端后才可以保存一的一端,所以在保存多的一端时多的一端不知道一的一端是否
存在相应的数据,所以只能将维护的关系字段设置为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
关键字: Hibernate, one-to-many
后续资料参考:http://blog.csdn.net/liangoo7/article/details/8070166
Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)的更多相关文章
- Java进阶知识10 Hibernate一对多_多对一双向关联(Annotation+XML实现)
本文知识点(目录): 1.Annotation 注解版(只是测试建表) 2.XML版 的实现(只是测试建表) 3.附录(Annotation 注解版CRUD操作)[注解版有个问题:插入值时 ...
- Java进阶知识09 Hibernate一对多单向关联(Annotation+XML实现)
1.Annotation 注解版 1.1.在一的一方加Set 1.2.创建Customer类和Order类 package com.shore.model; import java.util.Hash ...
- Hibernate多对多单向关联和双向关联 --Hibernate框架
Hibernate关联关系中相对比较特殊的就是多对多关联,多对多关联与一对一关联和一对多关联不同,多对多关联需要另外一张映射表用于保存多对多映射信息.本例介绍多对多单向关联和双向关联.单向关联 :指具 ...
- hibernate单向关联与双向关联的区别(原)
今天看着hibernate的关联关系,有点迷糊.这里通过多对一表述一下双向与单向的区别. 多对一: 就是A表中的一个字段是B表的主键.多个A表中的数据可以对应一个B表中的数据,同理,一个B表中的数据可 ...
- Hibernate在关于一对多,多对一双向关联映射
[Hibernate]之关于一对多,多对一双向关联映射 因为一对多.和多对一的双向关联映射基本上一样,所以这里就一起写下来! Annotations配置 @Entity @Table(name=&qu ...
- Hibernate 一对多单向关联Demo
以Classes[班级]和Student[学生]为例的Demo Classes .java public class Classes implements Serializable { private ...
- Hibernate(十一)多对多双向关联映射
上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我 们讲解一下七种映射中的最后一种多对多双向关联映射. 多对多双向关联映射 按照我们之前的惯例,先看 ...
- Hibernate一对多单向(双向)关联映射
(1).编写配置文件 Hibernate通过读写默认的XML配置文件hibernate.cfg.xml加载数据库配置信息.代码如下: <hibernate-configuration> & ...
- hibernate 一对多单向注解配置(实现级联操作 )
学生表关联学生的课程表(一对多) 学生表实体类: @Entity @Table(name = "JXD_COM_STUDENT") public class StudentMode ...
随机推荐
- HANA私有云解决方案
在移动互联网时代,不支持在云上的部署一定会落伍的,HANA作为SAP力推的技术,对云的支持也做的很不错,今天我们就来探讨一下HANA私有云解决方案,至于公有云或者混合云,思路也是大同小异了. ...
- Wed Jul 04 18:01:38 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended
Wed Jul 04 18:01:38 CST 2018 WARN: Establishing SSL connection without server's identity verificatio ...
- web session 原理1
原理 我们都知道,浏览器无状态的.浏览器是操作不了session的,浏览器能够做的只是传递cookie,每次都传递. 把当前主机下的,和当前请求相同域下的cookie 传递到服务器去,只要cooki ...
- golang判断文件/文件夹是否存在
使用os包,os.stat返回err==nil,说明存在: os.IsNotExist(err)为true,说明不存在:否则不确定是否存在 func DelJar(fileName string) e ...
- python_03 各种运算符
1.算数运算 2.比较运算 3.赋值运算 4.逻辑运算 先计算括号中表达式 计算顺序:and,or,not在一个表达式中从前到后计算, 若and前一个元素为false则立刻返回为False,不计算后面 ...
- FB4.6项目迁移到4.7时 embed报错问题
问题: 从FB4.6或更早版本移植到4.7的项目Embed标签,比如 [Embed(source="assets/BtnPlay.png")] ,会报错 解决 方案: 4.7E ...
- js乱码问题解决
乱码有可能出现在下面两种情况 1.高级浏览器直接访问js路径 2.jsp引用js 针对上述两种情况的解决方式: 1.查看设置浏览器的字符集 2.查看web服务器的字符集,比如Tomcat 配置UTF- ...
- MySQL5.7 查询用户,配置IP限制
1) MySQL 查询现在所有用户 select host,user from user; Navicat点击用户标签 查询;2) GRANT ALL PRIVILEGES ON *.* TO 'em ...
- 爬虫--Scrapy-持久化存储操作
总体概况 持久化存储操作: a. 磁盘文件 a) 基于终端指令 i. 保证parse方法返回一个可迭代类型的对象(存储解析到的页面内容) ii. 使用终端指令完成数据存储到制定磁盘文件中的操作 1. ...
- 利用docker-machine安装swarm
转自:https://www.cnblogs.com/jsonhc/p/7832642.html 安装之前的环境: 两个节点,节点1:192.168.101.14,用来创建manager1 machi ...