zoukankan      html  css  js  c++  java
  • Hibernate框架学习(十)——查询优化

    一、类级别查询

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

  • 相关阅读:
    淘宝网与九部委连合启动2011收集全平易近维权
    淘宝不雅光宣布揭晓推出机票价值指数
    文思信息2010年第四财季净利增26.2%
    创业邦“立异中国2011”活动正式启动
    快讯:出路无忧2010第四季度净利润6690万元
    柳传志美国高校演讲:中国企业的国际化之路
    Android 开发笔记八 截屏操作
    Android 开发笔记三 BroadcastReceiver 广播接收者
    Android 开发笔记 一
    Android 开发笔记六 定位
  • 原文地址:https://www.cnblogs.com/cxq1126/p/8459885.html
Copyright © 2011-2022 走看看