1.多对一映射
![](https://img.haomeiwen.com/i1128757/9e4132f73e649855.png)
![](https://img.haomeiwen.com/i1128757/25b3a52aeb52ed0d.png)
![](https://img.haomeiwen.com/i1128757/91d94384ba5a7f60.png)
2.一对多映射
一对多:
不是说一个部门对应多个employees集合.
而是说一个部门对于employees集合中的多个元素(员工).
![](https://img.haomeiwen.com/i1128757/5fc1e5f17734e4ec.png)
![](https://img.haomeiwen.com/i1128757/d6a52b56a710786d.png)
![](https://img.haomeiwen.com/i1128757/63055a05e9ed284d.png)
![](https://img.haomeiwen.com/i1128757/8b6280a5f304e3fe.png)
![](https://img.haomeiwen.com/i1128757/ae55657d38fb97ba.png)
![](https://img.haomeiwen.com/i1128757/14529dd51c35c65a.png)
3.双向多对一映射
![](https://img.haomeiwen.com/i1128757/71081385513b326f.png)
![](https://img.haomeiwen.com/i1128757/1f786d376b6dd436.png)
![](https://img.haomeiwen.com/i1128757/f0e3c204d2962852.png)
![](https://img.haomeiwen.com/i1128757/ea56cf80e0f54856.png)
选择
任何时候,都可以直接删除many方.
在双向的one2many/many2one中,
1,inverse=false的时候,可以直接删除one方(先把所有many方的外键设置为空);
2,inverse=true的时候,不能直接删除one方;(外键约束--->HQL)
开发中多对一,一对多,单向和双向的选择?
1:绝大多数的大多数情况都是使用:单向的many2one即可.
在开发中,添加many方数据的时候,都是通过下拉列表选择one方.
2:少数情况,会使用双向的多对一(对象成树状结构(自连接查询/部门)/组合关系).
但是注意,此时inverse一定要设置为true.
3:很难使用到one2many.
使用双向管理映射,至少都会发生5条SQL.
先保存部门,再保存员工.
通过分析SQL,发现其实只需要前3条SQL就可以完成数据保存操作.
后面两天UPDATE语句,是因为one方也想维护关系,故意发出的.
如此一来,性能就低了.
如果是双向关联映射,我们要让one方放弃管理,(one方不负责关系维护).
![](https://img.haomeiwen.com/i1128757/6d507d7de313f733.png)
4.一对一(略)
![](https://img.haomeiwen.com/i1128757/39f3d7bb2e3f9cd4.png)
![](https://img.haomeiwen.com/i1128757/b12488a6d8955cc8.png)
![](https://img.haomeiwen.com/i1128757/5e9e034100068e47.png)
![](https://img.haomeiwen.com/i1128757/b011d744b40720a9.png)
5.多对多(略)
![](https://img.haomeiwen.com/i1128757/04d0ad9e96c55ced.png)
![](https://img.haomeiwen.com/i1128757/061bcec9d74cbef2.png)
![](https://img.haomeiwen.com/i1128757/4e2b1bb7073e46e3.png)
6.映射枚举类型
![](https://img.haomeiwen.com/i1128757/c3bcf94f23f44f21.png)
![](https://img.haomeiwen.com/i1128757/f44ef881f0d2374a.png)
枚举对象:有序号(ordinal,从0开始)和元素名称(MAN).
所以:我要表示user.setGender(Gender.WOMAN);
Gender.WOMAN存储到数据库有两种形式:
第一种:使用序号1来存储(默认).
第二种:使用元素名WOMAN做存储.
![](https://img.haomeiwen.com/i1128757/f62b435b77a2337b.png)
7.组件映射(略)
![](https://img.haomeiwen.com/i1128757/3e7330bf93b67495.png)
![](https://img.haomeiwen.com/i1128757/61c6bce5ad412349.png)
![](https://img.haomeiwen.com/i1128757/1944f70d940127c8.png)
问题1:之前设计one2one的时候,是让customer表和customerprofile表分别存储信息.
其实,我们可以使用一张表来存储客户的基本信息和拓展信息.怎么做?
问题2:上图的公司的对象的营业地址和注册地址如何做配置.
在一个宿主对象中,如果出现了两个相同的组件对象,一定要修改列的名称.
![](https://img.haomeiwen.com/i1128757/1a188151b797b29b.png)
![](https://img.haomeiwen.com/i1128757/6a81cdb3ccd5129a.png)
网友评论