表与表之间的关系
一对一 (使用一张表即可达到效果)
使用一张表即可达到效果
一对多
客户和联系人 ---> 一对多关系 (一个客户有多个联系人)
- 客户 : 与公司有业务往来,百度,新浪,360
- 联系人 :公司里的员工
![](https://img.haomeiwen.com/i5206072/8b8a9e2cbc51ebf7.png)
创建实体类
![](https://img.haomeiwen.com/i5206072/f569d477bf8435d0.png)
![](https://img.haomeiwen.com/i5206072/b39ff23e834a08a9.png)
配置一对多映射
![](https://img.haomeiwen.com/i5206072/3ac9a736ef995b1d.png)
![](https://img.haomeiwen.com/i5206072/7b50b46719b41761.png)
![](https://img.haomeiwen.com/i5206072/db735ca6a9419d46.png)
![](https://img.haomeiwen.com/i5206072/3d5829c23d69d2cb.png)
![](https://img.haomeiwen.com/i5206072/cf3882a813d8e9f8.png)
inverse属性
(1) 因为Hibernate中双向维护外键,因此级联操作时会重复操作外键,影响效率
(2) 解决方式:让其中一方不维护外键(让“一”的一方放弃维护外键)
(3)具体实现:
![](https://img.haomeiwen.com/i5206072/e65b71472e7aa0d3.png)
多对多
多对多
![](https://img.haomeiwen.com/i5206072/93a038308d95f186.png)
![](https://img.haomeiwen.com/i5206072/580d3e1e12753281.png)
![](https://img.haomeiwen.com/i5206072/2ae6ef2f4beeab1c.png)
![](https://img.haomeiwen.com/i5206072/1409f071e9c02f52.png)
多对多添加:
![](https://img.haomeiwen.com/i5206072/d2baa941adf7f1c2.png)
![](https://img.haomeiwen.com/i5206072/21a623f052c74197.png)
多对多删除(一般不进行这样的操作,可通过修改对三张表来维护关系)
![](https://img.haomeiwen.com/i5206072/92da6c721112e9fc.png)
![](https://img.haomeiwen.com/i5206072/e915c3ee63810e41.png)
维护第三张表
![](https://img.haomeiwen.com/i5206072/a074c26e2fd18599.png)
![](https://img.haomeiwen.com/i5206072/60770a8e4ba7d006.png)
![](https://img.haomeiwen.com/i5206072/e78033f66e01642a.png)
Hibernate 多种查询方式
![](https://img.haomeiwen.com/i5206072/78f6ca05f6ffd04f.png)
对象导航查询
![](https://img.haomeiwen.com/i5206072/d84adccd5c2346c2.png)
oid 查询
![](https://img.haomeiwen.com/i5206072/70fe725f9ce89887.png)
hql 查询
![](https://img.haomeiwen.com/i5206072/0455a6df7415637a.png)
![](https://img.haomeiwen.com/i5206072/44b91c2d5a9945e7.png)
![](https://img.haomeiwen.com/i5206072/05ca050e325a8919.png)
![](https://img.haomeiwen.com/i5206072/31da78546998b523.png)
![](https://img.haomeiwen.com/i5206072/f4eb3935221fd63f.png)
![](https://img.haomeiwen.com/i5206072/133688ef4ca689ea.png)
投影查询:(查询部分字段的查询成为投影查询)
![](https://img.haomeiwen.com/i5206072/3e37b2a389f842ea.png)
![](https://img.haomeiwen.com/i5206072/bf5610e4d272de0d.png)
聚集函数查询
![](https://img.haomeiwen.com/i5206072/d8cc1f4cf3e55a86.png)
![](https://img.haomeiwen.com/i5206072/be86e7c39fe3ca4e.png)
QBC 查询
![](https://img.haomeiwen.com/i5206072/2211f2d2b6537dae.png)
![](https://img.haomeiwen.com/i5206072/bd988755a61e61ca.png)
![](https://img.haomeiwen.com/i5206072/e71e2280ceff6f93.png)
![](https://img.haomeiwen.com/i5206072/3656fb97f3c58a72.png)
![](https://img.haomeiwen.com/i5206072/ec22c64e47079856.png)
![](https://img.haomeiwen.com/i5206072/732433d2f5b36b1a.png)
![](https://img.haomeiwen.com/i5206072/6542b0b91d6f90a8.png)
内链接查询:查询出两张表关联的数据,未关联的数据无法查出
![](https://img.haomeiwen.com/i5206072/b99eee665a3a3618.png)
左外链接(显示左边表的全部数据,右边表的关联数据)
![](https://img.haomeiwen.com/i5206072/12355e05982ebcb7.png)
右外链接(显示右边表的全部数据,左边表的关联数据)
![](https://img.haomeiwen.com/i5206072/3f35bed7a3da5fed.png)
hql 多表查询
![](https://img.haomeiwen.com/i5206072/3cb2bac0d2906f9a.png)
![](https://img.haomeiwen.com/i5206072/f31a4242cf1fc9dd.png)
![](https://img.haomeiwen.com/i5206072/17cd72b50694e02e.png)
![](https://img.haomeiwen.com/i5206072/f0eea06d6f15f318.png)
![](https://img.haomeiwen.com/i5206072/9859196adcc09ebc.png)
![](https://img.haomeiwen.com/i5206072/5e0437a2779ce938.png)
查询策略
![](https://img.haomeiwen.com/i5206072/34b5bb6e8fbb7d50.png)
延迟查询分类两类:
-
类级别延迟: 根据id查询返回实体对象,调用load方法不会马上发送语句
-
关联级别延迟 : 查询关联数据时进行延迟(Hibernate 默认已做延迟处理)
![](https://img.haomeiwen.com/i5206072/879a22cccaba07fa.png)
![](https://img.haomeiwen.com/i5206072/5d974788a66d00bd.png)
批量抓取( 查询出客户后又需要查询每个客户的联系人,通过配置 batch-size 可已提高查询效率,减少查询此时 )
![](https://img.haomeiwen.com/i5206072/0fc5c36a3b6051f7.png)
网友评论