2016-03-14 21:36 421人阅读 评论(0) 收藏 举报
 分类:
web开发(19) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

今天面试碰到答不上来。。马上回家查了下,现在写下对hibernate缓存的理解以加深印象。

1、一级缓存

可以简单的理解为session缓存,即同一个session中使用get、load、迭代,会优先重缓存中取,如果没有则查询数据库并存入缓存,session关闭后缓存清空

2、二级缓存

可以直接理解为升级版,即sessionFactory 缓存,即只要使用的session是同一个sessionFactory创建的则可共用缓存,并且修改、删除、添加、会更新缓存。

3、查询缓存

也就是三级缓存(说三级缓存的很坑),我的理解就是query缓存,使用query.setCacheable(true) 即可开启查询缓存,查询缓存只缓存普通属性结果集,不缓存整个实体类结果集,以及实体类ID结果集,查询缓存是针对普通属性结果集的缓存对实体对象的结果集只缓存id,查询缓存在查询实体类时会首先到查询缓存中查询ID然后根据ID到一级或者二级缓存中查询实体类,没有则从数据库取,查询普通属性时也是优先从缓存中取。

关闭二级缓存,开启查询缓存,调用query.list()会发出N条语句,因为查询缓存是根据ID到二级缓存中找的,没有则查找数据库,二级缓存和查询缓存同时开启则查询同样SQL语句时不会发出数据库请求,而是直接从缓存中取。

备注:

查询缓存只会query.list()起作用.

session.find方法永远是从数据库中获取数据

缓存通过map 使用ID作为KEY来缓存对象、一级和二级缓存只缓存对象

 
1

说说自己对hibernate一级、二级、查询、缓存的理解。的更多相关文章

  1. Hibernate 一级二级缓存

    1.一级缓存与session关联,session关闭时,缓存数据消失: 2.一级缓存无法自我控制缓存的数量,需考虑缓存溢出: 3.二级缓存与sessionFactory关联,当sessionFacto ...

  2. Hibernate <查询缓存>

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

  3. 在Spring、Hibernate中使用Ehcache缓存(2)

    这里将介绍在Hibernate中使用查询缓存.一级缓存.二级缓存,整合Spring在HibernateTemplate中使用查询缓存.,这里是hibernate3,使用hibernate4类似,不过不 ...

  4. 让EFCore更疯狂些的扩展类库(二):查询缓存、分部sql、表名替换的策略配置

    前言 上一篇介绍了扩展类库的功能简介,通过json文件配置sql语句 和 sql语句的直接执行,这篇开始说明sql配置的策略模块:策略管理器与各种策略的配置. 类库源码:github:https:// ...

  5. Hibernate 再接触 一级缓存 二级缓存 查询缓存

    缓存 就是把本来应该放在硬盘里的东西放在内存里  将来存内存里读 一级缓存: session缓存 二级缓存: sessionFactory级别的   (适合经常访问,数据量有限,改动不大) 很多的se ...

  6. Hibernate一级缓存、二级缓存以及查询缓存的关系

    转载自http://blog.csdn.net/maoyeqiu/article/details/50209893 前两天总结了一下二级缓存和查询缓存的关系,但是又有一个新的问题,就是查询缓存缓存到二 ...

  7. Hibernate的一级缓存、二级缓存和查询缓存。

    Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体.修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除 ...

  8. hibernate缓存机制详细分析(一级、二级、查询缓存,非常清晰明白)

    本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相信 ...

  9. hibernate 一级缓存,二级缓存,查询缓存

    1.一级缓存是session级的缓存,session结束即事务提交,session关闭,缓存清除.效果不大 get方式:一个session内,第二次查询不连数据库.适用于一级缓存 load方式:懒加载 ...

随机推荐

  1. NRF24L01

    转http://blog.csdn.net/wangshenzhen123/article/details/47207837 1.一个发送通道,6个接收通道.发送端发送通道地址寄存器中的地址指向的就是 ...

  2. 机器学习(5): K-means 算法

    3. K-means 算法:        3.1 Clustering 中的经典算法,数据挖掘十大经典算法之一      3.2 算法接受参数 k :然后将事先输入的n个数据对象划分为 k个聚类以便 ...

  3. [转]Microsoft Office 2010、Visio 2010、Project 2010官方中文版+有效激活方法

    本文刊发的Office 2010.Project 2010O.Visio 2010:(1)均为“微软批量授权中心”原版光盘镜像:(2)均提供了32位(x86)和64位(x64)两种版本.为使大家了解各 ...

  4. window 环境 Composer 安装 thinkphp5

    参考链接:https://www.kancloud.cn/thinkphp/thinkphp5_quickstart/478269 在 Windows 中,你需要下载并运行 Composer-Setu ...

  5. docker lnmp php

    使用 Docker 构建 LNMP 环境 https://segmentfault.com/a/1190000008833012 Docker 快速上手指南 https://segmentfault. ...

  6. C# FUNC 应用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Func ...

  7. zabbix应用之Low-level discovery监控磁盘IO

    参考文章: http://qicheng0211.blog.51cto.com/3958621/1599776/ zabbix自带的"Template OS Linux"模板支持监 ...

  8. chrome浏览器的scrollTop问题

    使用zepto里面的scrollTop()方法是没用哒~~~ chrome浏览器: document.body.scrollTop = 一个数值 其它浏览器: document.documentEle ...

  9. vue自动化单元测试

    // 引用vue和需要测试的组件 import Vue from 'vue' import HelloWorld from '@/components/HelloWorld' // 创建测试套件,一个 ...

  10. java 读取execl文件

    java 中读取execl文件是必要功能,下面说下几种读取方式 1.jxl   (支持2003 不支持 2007  貌似最新版支持) /**    * 规则设置的模板导入    * @param fi ...