Hibernate框架学习(十)——查询优化

2018-06-18 03:13:51来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、类级别查询

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

2、load方法:是在执行时不发送任何SQL语句,返回一个对象,使用该对象时才执行查询;应用类级别的加载策略。

1>延迟加载:仅仅获得,没有使用,不会查询,在使用时才进行查询
2>是否对类进行延迟加载:可以通过在class元素上配置lazy属性来控制

  lazy(默认):true 查询类时会返回代理对象,会在使用属性时根据关联的session查询数据库,加载数据

           加载时不查询,使用时才查询

     lazy:false 加载时立即查询,和get方法没有区别

  结论:为了提高效率,建议使用延迟加载(懒加载)

3>注意:使用懒加载时要确保,调用属性加载数据时,session还是打开的,不然会抛出异常。

二、关联级别查询

1、集合策略

lazy属性:决定是否延迟加载
    true(默认):延迟加载,懒加载
    false:立即加载
    extra:极其懒惰,与懒加载效果基本一致
fetch属性:决定加载策略,使用什么类型的SQL语句加载集合数据
    select(默认):单表查询加载
    join:使用多表查询加载集合
    subselect:使用子查询加载集合

2、关联属性策略

lazy属性:决定加载时机
  false:立即加载
  proxy:由Customer的类级别加载策略决定

fetch属性:决定加载的SQL语句
  select:使用单表查询
  join:使用多表查询

3、结论

为了提高效率,fetch应选择select,lazy应选择 true,全部使用默认值。

4、no-session问题解决

扩大session的作用范围

三、批量抓取

batch-size:抓取集合的数量
       在抓取客户的集合时,一次抓取几个客户的联系人集合

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:内部类

下一篇:spring框架学习笔记4:SpringAOP实现原理