<1> 立即检索
<2> 延迟检索
<3> 迫切左外连接检索
- 类级别的检索策略
load()方法默认为延迟检索,且lazy可设置为true或false;而get()方法和Query的list()方法会忽略<class>元素的lazy属性,不管lazy属性取什么值,这两个方法总是采用立即检索策略。
- 关联级别的检索策略
一对多关联、多对一关联默认为延迟检索;
一对一关联按照外键映射时,<many-to-one name="address" column="ADDRESS_ID" class="mypack3.Address" cascade="all"unique="true"/>元素中默认的还是延迟检索,<one-to-one name="customer" class="mypack3.Customer"property-ref="address" />元素中默认为迫切左外连接检索。
- 属性级别的检索策略
默认为立即检索。属性级别的延迟检索策略适用于二进制大对象、字符串大对象和大容量组件类型的属性。
1. lazy属性
类级别:<class>元素中lazy属性的可选值为:true(延迟检索)和false(立即检索)。
一对多关联级别:<set>元素中lazy属性的可选值为:true(延迟检索)、extra(增强延迟检索)和false(立即检索)。
多对一关联级别:<many-to-one>元素中lazy属性的可选值为:proxy(延迟检索)、no-proxy(无代理延迟检索)和false(立即检索)。
2. fetch属性
类级别:没有此属性。
一对多关联级别:取值为select(select查询语句)或subselect(带子查询的select语句)时,决定初始化orders集合时的查询语句的形式;如果取值为join(迫切左外连接检索),则决定orders集合别初始化的时机。默认为select。
多对一关联级别:<many-to-one>元素中fetch属性的可选值为:select(select查询语句)、join(迫切左外连接检索)。默认为select。
【注】HQL会忽略映射文件设置的迫切左外连接检索策略。
3. batch-size属性
设定批量检索的数量,合理的取值在3~10之间。