查询缓存:

  定义:查询缓存它是基于二级缓存的,可以保存普通属性查询的结果,查询对象实体时,他会保存id作为键,查询结果作为值,下个对象访问时,可以直接查到

      查询缓存查询实体对象时,显著的特点是,会执行多条查询id查询语句

  生命周期:当关联的表发生修改,查询缓存的生命周期结束

  查询缓存的配置和使用:

    1.修改hibernate.cfg

  1. <!-- 开启查询缓存 默认为false -->
  2. <property name="hibernate.cache.use_query_cache">false</property>

    2.关联实体类跟二级缓存配置一样的

    3.在程序中启用:

      query.setCacheable(true);

  开启查询缓存,关闭二级查询的情况下:

  1. public void seleCacheTest(){
  2. try {
  3. session=HibernateUtil.currentSession();
  4. session.beginTransaction();
  5. List grade=session.createQuery("select g from Grade g")
  6. .setCacheable(true)
  7. .list();
  8. for(int i=0;i<grade.size();i++){
  9. Grade grad=(Grade)grade.get(i);
  10. System.out.println(grad.getGradename());
  11. }
  12.  
  13. } catch (Exception e) {
  14. // TODO: handle exception
  15. }finally{
  16. HibernateUtil.closeSession();
  17.  
  18. }
  19. System.out.println("-------------");
  20. try {
  21. session=HibernateUtil.currentSession();
  22. session.beginTransaction();
  23. List grade=session.createQuery("select g from Grade g")
  24. .setCacheable(true)
  25. .list();
  26. for(int i=0;i<grade.size();i++){
  27. Grade grad=(Grade)grade.get(i);
  28. System.out.println(grad.getGradename());
  29. }
  30.  
  31. } catch (Exception e) {
  32. // TODO: handle exception
  33. }finally{
  34. HibernateUtil.closeSession();
  35.  
  36. }
  37.  
  38. }

    总结:

      itetator不支持查询缓存

      list 开启查询缓存时,关闭二级缓存:

         在不同session中:第二次查询时,会发出n条查询id

         同一session中时,由于一级缓存的作用:所以无论有没有开启查询缓存都只有一条查询语句  

      list开启查询缓存时,开启二级缓存时:

         只执行一条查询语句,因为二级缓存生效了

    在缓存知识点中需要注意的:

      缓存不能随便用,尽量不用!

      在使用缓存时,还需要考虑到脏数据的问题!

      各级缓存的特点:

        一级缓存,save,get,load,query时都会产生缓存,这是无法禁止的

        二级缓存,二级缓存跨session操作,性能比较好,但是不能查询普通属性

        查询缓存,以键值对方式存放缓存,必须在程序中创建

        

Hibernate <查询缓存>的更多相关文章

  1. Hibernate ——二级缓存

    一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...

  2. 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法

    配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...

  3. 配置Hibernate二级缓存步骤

    配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...

  4. Hibernate 二级缓存 总结整理(转)

    和<Hibernate 关系映射 收集.总结整理> 一样,本篇文章也是我很早之前收集.总结整理的,在此也发上来 希望对大家有用.因为是很早之前写的,不当之处请指正. 1.缓存:缓存是什么, ...

  5. Hibernate(十六):Hibernate二级缓存

    Hibernate缓存 缓存(Cache):计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如磁盘上的文件或者数据库)之间,起作用是降低应用程序直接读取永久性数据存储源的频率,从而提高应用 ...

  6. hibernate二级缓存demo2

    @Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...

  7. hibernate二级缓存整合

    <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http:// ...

  8. ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存

    ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate  : Hibernate是一个持久层框架,经常访问物理数据库 ...

  9. spring boot集成ehcache 2.x 用于hibernate二级缓存

    https://www.jianshu.com/p/87b2c309b776 本文将介绍如何在spring boot中集成ehcache作为hibernate的二级缓存.各个框架版本如下 spring ...

  10. js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间

    *********************************************js相关********************************************* // 在指 ...

随机推荐

  1. 使用HttpWebrequest对网站进行模拟操作(附登陆百度demo)

    // a[href=#viewSource]"); //查看源代码标签 viewSourceArr.attr("title", "查看源代码"); v ...

  2. 集合中list、ArrayList、LinkedList、Vector的区别、Collection接口的共性方法以及数据结构的总结

    List (链表|线性表) 特点: 接口,可存放重复元素,元素存取是有序的,允许在指定位置插入元素,并通过索引来访问元素 1.创建一个用指定可视行数初始化的新滚动列表.默认情况下,不允许进行多项选择. ...

  3. angularJs之template指令

    template: 如果我们只需要在ng-view 中插入简单的HTML 内容,则使用该参数: .when('/computers',{template:'这是电脑分类页面'}) templateUr ...

  4. Java学习——增强for循环、switch

    增强for循环 Java5引入了一种主要用于数组的增强型for循环. 例子 public class ForTest { public static void main(String args[]){ ...

  5. 加密解密及其javascript实现

    前端提交数据到后台,如果不适用https协议,则提交的数据就有被第三者窃取的可能.前端使用js来编码数据主要分为以下三种: 1.摘要算法 2.对称加密 3.非对称加密 下面分别介绍三种算法中对应的一个 ...

  6. EBS创建相应的用户

    登陆EBS,依次点击"System Administrator"-->"Security"-->"User"-->&quo ...

  7. TCP/IP详解--连接状态变迁图CLOSE_WAIT

    终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...

  8. [翻译] 为什么Uber的数据库从Postgres 切换到 MySql

    Uber工程师团队发布了一个重要的博客文章:他们的数据库从Postgres从移动到MySQL.毫不夸张地说,阅读这篇文章是一种享受,特别是因为他们提到这些细节:磁盘格式和那对他们2个数据库的表现的影响 ...

  9. windows nslookup、tracert 常用命令

    nslookup www.baidu.com 可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用哪个DNS服务器进行解释. tracert www.baidu.com 路由

  10. SecureCRT使用小技巧

    SecureCRT使用小技巧  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 以前觉得xshell链接工具挺好的,看起来又好耍,图 ...