hibernate检索策略分为两类:
立即查询:
根据id查询,调用get方法,一调用get方法马上发送语句查询数据库
延迟查询:
根据id查询,调用load方法,调用load方法不会马上发送语句查询数据,只有得到对象里面的值时候才会发送语句查询数据库
(1)类级别延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句
(2)关联级别延迟:
例:查询某个客户,再查询这个客户的所有联系人,查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟
关联级别延迟操作
(1)、映射文件中进行配置实现
set标签上使用属性
<set fetch="" lazy=""></set>
- true:延迟(默认)
- false:不延迟
- extra:极其延迟
(2)、批量抓取
例:查询所有的客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人
会发送多条 SQL 语句
优化:在客户的映射文件中,set标签配置
batch-size值,值越大发送语句越少
<set batch-size="10">