hibernate 映射<四>多对一双向映射
学生和班级的例子来说,多个学生可以对应一个班级。
1.站在学生角度来说,学生就是多端。那么我们可以通过多对一来维护2者的关系。
2.站在班级的角度来说,班级就是一端。那么我们可以通过一对多啦维护2者的关系。
3.我们也可以双向关联两者的关系。(这个要牵涉到了反转)
无论是多对一还是一对多,最终生成的数据库的表中,都会在多的一端增加了一个外键来关联一的一端。
首先先站在学生的角度上 多对一:


最终生成的数据库:

下面是多对一映射中的字段意思:

一对多中:


生成的表结构和多对一 一样。
保存的时候,先保存一端,然后保存多端。也就是先保存student,然后保存clazz。
但是这样会造成一个问题,因为student中会多一个字段cid,但是保存student 的时候我们操作的是对象而不是数据库
发后台的语句:
//保存student
Hibernate: insert into Student (name, sex, age) values (?, ?, ?) //并没有插入cid的值,这也是为什么student的cid配置不能为null的原因。
//保存class
Hibernate: insert into Clazz (name) values (?)
//commit的时候会发送更新语句。
Hibernate: update Student set cid=? where id=?
所以我们不建议使用一端来维护多端。所以我们这就出现了反转,把维护的工作交给了多端来维护。保存,修改,删除,都由多端来维护。
所以在一端我们就可以加入 <set name="student" inverse="true">
inverse="true"是双向关联的概念,使用了这个,再进行一端维护多段是不能关联cid的。所以就必须用多端维护。
下面就是双向关联:


这样,这样进行保存的时候,只能先保存一端然后再保存多端。反之操作cid将不会update,cid也就不会有值。
反向工程:
点击finish就可以了.

关于fetch,以后详细再说。
hibernate 映射<四>多对一双向映射的更多相关文章
- hibernate 映射<五>多对多双向映射
多对多映射,可以分单向映射和双向映射.无论是单向还是多向那一方维护,还是双方维护,生成的表结构是一样的. 订单order和产品product是对多对的关系,就是多个订单可以对应多个产品,多个产品也可以 ...
- Hibernate ManyToOne Mappings 多对一关联映射
Hibernate ManyToOne Mappings 多对一关联映射 Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml)2.创建持久化类 ...
- Hibernate第四篇【集合映射、一对多和多对一】
前言 前面的我们使用的是一个表的操作,但我们实际的开发中不可能只使用一个表的-因此,本博文主要讲解关联映射 集合映射 需求分析:当用户购买商品,用户可能有多个地址. 数据库表 我们一般如下图一样设计数 ...
- --------------Hibernate学习(四) 多对一映射 和 一对多映射
现实中有很多场景需要用到多对一或者一对多,比如上面这两个类图所展现出来的,一般情况下,一个部门会有多名员工,一名员工只在一个部门任职. 多对一关联映射 在上面的场景中,对于Employee来说,它跟D ...
- (转)Hibernate框架基础——多对多关联关系映射
http://blog.csdn.net/yerenyuan_pku/article/details/52756536 多对多关联关系映射 多对多的实体关系模型也是很常见的,比如学生和课程的关系.一个 ...
- 【Hibernate框架】关联映射(多对多关联映射)
按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...
- Hibernate关联关系映射之一对多双向映射
一对多映射有两种,一种是单向的,另一种的多向.我们一般是使用双向的,所以我就写写一对多的双向映射. 还是想昨天一样举个例子来说明:作者<===>作品,还是对数据进行增删改查. 我们一般是把 ...
- hibernate一对多多对一双向
注意事项:一对多,多对一双向关联,在一的一方的多的getSet集合上的oneToMany上加上mappedBy.告诉hibernate由多的方一来维护关系.这也符合逻辑 ,本来外键就是在加在多的一方. ...
- hibernate 2 一对多、多对一 双向映射
多对一或一对多中,在多的一方维护关系效率高 一:java实体类 1.Classes.java package cn.gs.ly.school.entity; import java.util.Set; ...
随机推荐
- SVN和Maven及Jenkins(转)
目前项目组在开发一个项目,由多个子模块构成,构建工具是maven,版本控制工具是svn.本文想对如何结合使用maven和svn提出一点初步的想法 一.只有svn的情况 首先考虑没有maven的情况.这 ...
- ehcache报错ERROR n.s.e.store.disk.DiskStorageFactory - Disk Write的解决办法
23:53:44 ERROR n.s.e.store.disk.DiskStorageFactory - Disk Write of com.koal.**.**.**.**.**.***Impl$$ ...
- Robotium--通过Id寻找控件
在自动化测试中,UI上经常有一些控件是没有名称的,那么此时,就可以通过id来找到这些控件. 案例:对两个EditText进行测试 package com.tangbc.tedit.test; impo ...
- 【转】关于Ubuntu的sources.list 的总结
一.作用 文件/etc/apt/sources.list是一个普通可编辑的文本文件,保存了ubuntu软件更新的源服务器的地址.和sources.list功能一样的是/etc/apt/sources. ...
- Repeater的ItemDataBound 事件中e.Item.DataItem 的数据类型
1.使用DataSet和DataTable绑定数据源时 DataRowView view = (DataRowView)e.Item.DataItem; 2.DataReader绑定数据源时 Syst ...
- 破解Windows Server 2003只允许3个用户远程登陆
导读:WIN2003在使用远程桌面登录的时候,一台机器默认情况下只允许3个用户同时登录. 这很不方便.我们修改WIN2003远程桌面的连接数,可以设置3个以上用户远程桌面. 1.启动终端服务:在&qu ...
- oracle遍历游标
1,while循环 declare v_tname ); cursor c_tname is select a.TABLE_NAME from user_tables a where a.TABLES ...
- 【转】深入理解Java内存模型(七)——总结
处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照.JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序 ...
- UIWebView禁止点击后跳转
#pragma mark 禁止webview中的链接点击 - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRe ...
- PHP preg_match正则表达
在php中preg_match()函数是用来执行正则表达式的一个常用的函数,下面我来给大家详细介绍preg_match使用方法. 函数用法 int preg_match_all ( string pa ...