表与表之间的关系
一对一 (使用一张表即可达到效果)
使用一张表即可达到效果
一对多
客户和联系人 ---> 一对多关系 (一个客户有多个联系人)
- 客户 : 与公司有业务往来,百度,新浪,360
- 联系人 :公司里的员工

一对多
创建实体类

客户类

联系人类
配置一对多映射

one-to-many

many-to-one

级联添加

级联删除

级联修改
inverse属性
(1) 因为Hibernate中双向维护外键,因此级联操作时会重复操作外键,影响效率
(2) 解决方式:让其中一方不维护外键(让“一”的一方放弃维护外键)
(3)具体实现:

使用inverse属性
多对多
多对多

多对多建表

多对多

Role配置

User配置
多对多添加:

添加配置

添加代码
多对多删除(一般不进行这样的操作,可通过修改对三张表来维护关系)

删除配置

删除代码
维护第三张表

维护第三张表

添加角色

删除角色
Hibernate 多种查询方式

Hibernate多种查询方式
对象导航查询

对象导航查询
oid 查询

oid 查询
hql 查询

hql 查询

hql查询

hql条件查询

模糊查询

排序查询

分页查询
投影查询:(查询部分字段的查询成为投影查询)

投影查询

投影查询
聚集函数查询

聚集函数查询

聚集函数查询
QBC 查询

QBC查询所有

QBC 条件查询

条件api

QBC排序查询

QBC分页查询

QBC统计查询

离线查询
内链接查询:查询出两张表关联的数据,未关联的数据无法查出

内链接查询
左外链接(显示左边表的全部数据,右边表的关联数据)

左外链接
右外链接(显示右边表的全部数据,左边表的关联数据)

右外链接
hql 多表查询

多表查询类型

内连接查询

迫切内连接查询

左外连接

左外连接查询

左外迫切连接
查询策略

查询策略
延迟查询分类两类:
类级别延迟: 根据id查询返回实体对象,调用load方法不会马上发送语句
关联级别延迟 : 查询关联数据时进行延迟(Hibernate 默认已做延迟处理)

延迟策略

及其懒惰
批量抓取( 查询出客户后又需要查询每个客户的联系人,通过配置 batch-size 可已提高查询效率,减少查询此时 )

批量抓取优化查询次数
