16.5、批量抓取
在查询多个对象的关联对象时,可以采用批量抓取方式来对程序进行优化.
要想实现批量抓取:
可以在配置文件中 batch-size属性来设置
可以使用注解 @BatchSize(size=4)
可以采用批量抓取来解决N+1问题.
注意:
无论是根据哪一方来查询别一方,在进行批量抓取时,都是在父方来设置 ,如果是要查询子信息,那么我们是在<set>上来设置batch-size,如果是从子方来查询父方,也是在父方设置在<class>设置batch-size.
父与子区分:
有外键的表是子(从关联方就是父(主)表
扩展:
QBC和HQL支持的运算
运算类型
| HQL运算符
| QBC运算符
| 含义
|
比较运算
| =
|
Expression.eq()
| 等于
| <>
|
Expression.not(Expression.eq())
| 不等于
| >
|
Expression.gt()
| 大于
|
>=
|
Expression.ge()
| 大于等于
| <
|
Expression.lt()
| 小于
|
<=
|
Expression.le()
| 小于等于
|
is null
|
Expression.isNull()
| 等于空值
|
is not null
|
Expression.isNotNull()
| 非空值
|
范围运算
| in (列表)
|
Expression.in()
| 等于列表中的某一个值
| not in (列表)
|
Expression.not(Expression.in())
| 不等于列表中的任意一个值
| between 值1 and 值2
|
Expression.between()
| 大于等于值1并且小于等于值2
|
not between 值1 and 值2
|
Expression.not(Expression.between())
| 小于值1或者大于值2
|
字符串模式匹配
|
like
| Expression.like()
| 字符串模式匹配
|
逻辑运算
| and
| Expression.add()或者Expression.conjunction()
| 逻辑与
| or
| Expression.or()或者Expression.disjunction()
| 逻辑或
| not
| Expression.not()
| 逻辑非
|
|
|