0%

检索策略

检索策略

类级别的检索策略

有两种方式,一种为立即检索,一种为延迟检索

在class元素中设置属性lazy 默认为true

  • 立即检索:立即加载检索方法指定的对象
  • 延迟检索:只有在使用具体属性(除id之外的属性)的时候才会加载

注意:只有在使用load方法的时候,lazy属性才会有用,在使用get()和list()方法时,只会使用立即检索

一对多和多对多检索策略

在set属性中配置一对多和多对多关联关系,set元素有lazy和fetch属性

  • lazy:主要决定set被初始化的时间,在加载主表时被初始化还是再被访问时被初始化 默认为true
  • fetch:取值为select或subselect时,决定初始化set的查询语句形式;取值为join,决定set被初始化的时机,lazy属性将会被忽略,默认为select
    • select set元素中每条数据都会执行一条select语句
    • subselect 使用子查询,直接初始化set中所有的元素,使用 in (select id from zitable),此时batch-size属性被忽略
    • join 使用左外连接 (Query的list方法会忽略join,使用延迟检索)
  • batch-size:set中有一个batch-size属性,用来配置在延迟加载的情况下,每次加载几条数据,可以减少查询语句,提升性能(查询多条时使用in语句查询)

多对一和一对一检索策略

在many-to-one元素中也包含lazy属性和fetch属性

  • lazy: proxy表示延时检索 no-proxy false 表示立即检索 默认proxy
  • fetch:select 每条数据使用一个select join表示使用左外连接 默认select
  • batch-size:可以在一的一端的class元素中设置batch-size,来配置一次初始化1的这一端的代理的个数