码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2018-02-23 15:57:06      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:建议   联系人   .com   单表   懒加载   sel   时机   图片   效果   

一、类级别查询

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:抓取集合的数量
       在抓取客户的集合时,一次抓取几个客户的联系人集合

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

标签:建议   联系人   .com   单表   懒加载   sel   时机   图片   效果   

原文地址:https://www.cnblogs.com/cxq1126/p/8459885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!