一、类级别查询

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框架学习(十)——查询优化的更多相关文章

  1. hibernate框架学习笔记6:事务

    MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...

  2. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...

  3. [ SSH框架 ] Hibernate框架学习之二

    一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...

  4. [ SSH框架 ] Hibernate框架学习之三

    一.表关系的分析 Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数据库的操作转化为对对象的操作,Hibernate的关联关系映射主要包括多表的映射配置.数据 ...

  5. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  6. hibernate框架学习笔记2:配置文件详解

    实体类: package domain; public class Customer { private Long cust_id; private String cust_name; private ...

  7. hibernate框架学习笔记1:搭建与测试

    hibernate框架属于dao层,类似dbutils的作用,是一款ORM(对象关系映射)操作 使用hibernate框架好处是:操作数据库不需要写SQL语句,使用面向对象的方式完成 这里使用ecli ...

  8. [ 学习笔记 ] Hibernate框架学习之一

    一.JavaEE开发三层结构和三大框架的对应关系: Struts2框架 -> 表现层 web层(MVC是表现层的设计模型) 业务层 service层 Hibernate框架 -> 持久层 ...

  9. hibernate框架学习之核心API

    ConfigurationSessionFactorySessionTransactionQueryCriteria Configuration Configuration对象用于封装Hibernat ...

随机推荐

  1. linux配置 yum 源

    使用 yum 命令安装软件包需要一个yum仓库(即yum源),yum通过客户端(yum命令本身即是yum客户端)去连接yum源服务器,CentOS默认yum源为官方的 http://mirrorlis ...

  2. vue点击实现 路由的跳转

    点击按钮实现路由的跳转 <div @click="gotoMenu">按钮</div> 实现跳转 methods: { gotoMenu(){ //跳转到上 ...

  3. HTML 1.1页面js修改文字颜色

    昨天的报告页面,想要实现根据不同文字内容改变字体颜色,效果图: 调试了半天出不来效果,最后请教了前端,上代码: <!DOCTYPE html> <html lang="en ...

  4. Selenium三种等待的使用方式

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  5. [USACO10DEC]宝箱Treasure Chest

    区间DP,但是卡空间. n2的就是f[i,j]=sum[i,j]-min(f[i+1][j],f[i][j-1])表示这个区间和减去对手取走的最多的. 但是空间是64MB,就很难受 发现一定是由大区间 ...

  6. EasyUI Messager 消息框点击右上角x无法执行回掉函数解决

    我先声明下,我是改动源码,网上的其他方法我试过了,不行.我是写java后台的,前端也是小白,可能讲的也也不是很清楚. 首先我想到的是在网上找到解决方法,我找到一个方法说在jquery.easyui.m ...

  7. IE-FSC

    Top3: Top2: FSC related to Redis: (Redis = https://www.cnblogs.com/ngtest/p/10693750.html) FSC statu ...

  8. HTML【2】表单提交与服务层的模拟(具体解释get与post提交方式的不同)

    在HTML[1]中已经说明了HTML编程的基本方式,最后说到了表单提交的方式有get和post方式.那么究竟什么是get/post 方式呢,两者有什么差别?如今我就详细的介绍一下. 首先回想一下表单的 ...

  9. CodeForces - 344A Magnets (模拟题)

    CodeForces - 344A id=46664" style="color:blue; text-decoration:none">Magnets Time ...

  10. Java与设计模式-策略模式

    在实际开发中,可能会遇到这样一个情况,某一功能的实现分为多种算法,这些算法能够认定为策略,在实际操作时选择不同算法或策略进行操作得出终于结果.在实际生活中.这些样例也是举不胜举.比如.商场举行活动,满 ...