Hibernate框架-查询优化

一、类级别查询

get方法:没有任何策略,调用即立即查询数据库加载数据。

load方法:应用类级别的加载策略

<class name="Customer" table="cst_customer" lazy="false" >
lazy(默认值):true,查询类时,会返回代理对象,会在使用属性时,根据关联的session查询数据库,加载数据
lazy:false. load方法会与get方法没有任何区别,调用时即加载数据
结论:为了提高效率,建议使用延迟加载(懒加载)
注意:使用懒加载时要确保,调用属性加载数据时,session还是打开的,不然会抛出异常



二、关联级别查询

1、集合策略

lazy属性: 决定是否延迟加载
        true(默认值): 延迟加载,懒加载
        false: 立即加载
        extra: 极其懒惰
fetch属性: 决定加载策略.使用什么类型的sql语句加载集合数据
        select(默认值): 单表查询加载
        join: 使用多表查询加载集合
        subselect:使用子查询加载集合
2、关联属性策略
fetch 决定加载的sql语句
	select: 使用单表查询
	join : 多表查询
lazy  决定加载时机
	false: 立即加载
	proxy: 由customer的类级别加载策略决定.

结论:为了提高效率,fetch的选择上应选择select, lazy的取值应选择true, 全部使用默认值


no-session问题解决:扩大session的作用范围


三、批量抓取
<!-- batch-size: 抓取集合的数量为3.
        抓取客户的集合时,一次抓取几个客户的联系人集合.
-->

猜你喜欢

转载自blog.csdn.net/w_meng_h/article/details/80280953