Hibernate 检索策略 lazy fetch batch-size

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_27108161/article/details/53844559

set 的 lazy 属性:

  1. 1-n 或 n-n 的集合属性默认使用懒加载检索策略
  2. 可以通过设置 set 的 lazy 属性来修改默认的检索策略. 默认为 true,并不建议设置为 false.
  3. lazy 还可以设置为 extra. 增强的延迟检索. 该取值会尽可能的延迟集合初始化的时机!

set 元素的 batch-size 属性:

  1. 设定一次初始化 set 集合的数量.

set 集合的 fetch 属性:

  1. 确定初始化 orders 集合的方式.
  2. 默认值为 select. 通过正常的方式来初始化 set 元素
  3. 可以取值为 subselect. 通过子查询的方式来初始化所有的 set 集合. 子查询作为 where 子句的 in 的条件出现, 子查询查询所有 1 的一端的 ID. 此时 lazy 有效.但 batch-size 失效.
  4. 若取值为 join. 则
  5. 在加载 1 的一端的对象时, 使用迫切左外连接(使用左外链接进行查询, 且把集合属性进行初始化)的方式检索 n 的一端的集合属性
  6. 忽略 lazy 属性.
  7. HQL 查询忽略 fetch=join 的取值

其他的点:

  1. lazy 取值为 proxy 和 false 分别代表对应对应的属性采用延迟检索和立即检索
  2. fetch 取值为 join, 表示使用迫切左外连接的方式初始化 n 关联的 1 的一端的属性忽略 lazy 属性.
  3. batch-size, 该属性需要设置在 1 那一端的 class 元素中:
    < class name=”Customer” table=”CUSTOMERS” lazy=”true” batch-size=”5”>
    作用: 一次初始化 1 的这一段代理对象的个数.

猜你喜欢

转载自blog.csdn.net/sinat_27108161/article/details/53844559