Hibernate 缓存机制全面讲解
简介
为了降低应用程序访问我们的数据的时候的频率,提高数据读取的速率。比如计算机中为了缓解CPU和内存之间速度差异而引入的缓存是一样的道理。Hibernate同样对缓存进行了支持,使得程序的运行效率得到了提高。
在Hibernate中,同一个session查询同一个数据时如果发现命中,就只会向数据库发送一条sql命令。不同的session会发送多次sql命令。
一级缓存
Hibernate一级缓存又称之为”Session缓存”,”会话期缓存”,顾名思义就是在会话期才会执行的缓存机制。一种轻量级的实现。session销毁时跟随销毁。
通过session从数据库查询实体时会把实体在内存中存储起来,下一次查询同一个实体时就不会再从数据库中获取了,而是从内存中获取此数据,大大的提高了数据获取的速度!
一级缓存的特点:
- 一级缓存无法撤销,而且是被强制执行的。
- 相关的API:
- evict():用于将某个对象从Session的一级缓存中清除
- clear():用于将一级缓存中的所有的对象全部清除
二级缓存
二级缓存的出现就是为了弥补一级缓存的生存期局限于session的生存期内,便于其他的session也能时用到缓存中的数据。即每个session都会共享的缓存,这就是Hibernate的二级缓存机制。
二级缓存默认不开启,所以需要手动的进行配置才行,步骤如下:
- 添加二级缓存的对应的jar包:commons-logging.jar,ehcache.jar
- 在Hibernate的配置文件中添加Provider类的描述:
net.sf.ehcache.hibernate.EhCacheProvider - 添加二级缓存的属性配置文件:在hibernate-release-5.1.0.Final\hibernate-ehcache\ehcache.xml目录下可以找到,放到src目录下即可。
- 在需要被缓存的表所对应的映射文件中添加标签。注意usage属性值的选择即可。
二者之间的区别
二级缓存: 其被称之为“全局缓存”,可供应用中所有的session共享缓存内容。是可插拔式的缓存,默认是EHCache,还可以支持其他的缓存组件,如Hashtable,OSCache,JBoss TreeCache等等。
在通常情况下将具有一下特征的数据会放到二级缓存中:
- 很少被修改的数据
- 不是很重要的数据,允许出现偶尔并发的数据
- 不会被并发访问的数据
- 参考性质的数据(字典表,码值表)

Hibernate 缓存机制全面讲解的更多相关文章
- 10.hibernate缓存机制详细分析(转自xiaoluo501395377)
hibernate缓存机制详细分析 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论 ...
- 【转 :Hibernate 缓存机制】
转自:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html Hibernate 缓存机制 一.why(为什么要用Hibernate缓存 ...
- hibernate缓存机制详解
hiberante面试题—hibernate缓存机制详解 这是面试中经常问到的一个问题,可以按照我的思路回答,准你回答得很完美.首先说下Hibernate缓存的作用(即为什么要用缓存机制),然后再 ...
- hibernate缓存机制与N+1问题
在项目中遇到的趣事 本文基于hibernate缓存机制与N+1问题展开思考, 先介绍何为N+1问题 再hibernate中用list()获得对象: /** * 此时会发出一条sql,将30个学生全部查 ...
- hibernate缓存机制(转)
原文出处:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html 一.why(为什么要用Hibernate缓存?) Hibernate是 ...
- hibernate缓存机制详细分析 复制代码 内部资料 请勿转载 谢谢合作
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- Hibernate 缓存机制
一.why(为什么要用Hibernate缓存?) Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数 ...
- hibernate缓存机制详细分析
转自:http://www.cnblogs.com/xiaoluo501395377/p/3377604.html 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级 ...
- Hibernate 缓存机制二(转)
感谢:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html 一.why(为什么要用Hibernate缓存?) Hibernate是一个 ...
随机推荐
- 【bzoj4571 scoi2016】美味
题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 ...
- ●BZOJ 3129 [Sdoi2013]方程
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3129 题解: 容斥,扩展Lucas,中国剩余定理 先看看不管限制,只需要每个位置都是正整数时 ...
- poj 1367 robot(搜索)
题意:给你一个图,求起点 到 终点的最少时间 每次有两种选择①:往前走1~3步 ②原地选择90° 费时皆是1s 图中1为障碍物,而且不能出边界.还要考虑机器人的直径 ...
- java版的类似飞秋的局域网在线聊天项目
原文链接:http://www.cnblogs.com/wangleiblog/articles/5323305.html 转载请注明 最近在弄一个java版的局域网在线聊天项目,功能跟飞秋差不多.p ...
- win10利用自带的IIS搭建ftp遇到瓶颈,离线求解!!!
- oracle之子查询、创建用户、创建表、约束
子查询 子查询可以分为单行子查询和多行子查询 单行子查询 [1] 将一个查询的结果作为另外一个查询的条 ...
- node之子线程child_process模块
node.js是基于单线程模型架构,这样的设计可以带来高效的CPU利用率,但是无法却利用多个核心的CPU,为了解决这个问题,node.js提供了child_process模块,用于新建子进程,子进程的 ...
- JVM之Java虚拟机详解
这篇文章解释了Java 虚拟机(JVM)的内部架构.下图显示了遵守Java SE 7 规范的典型的 JVM 核心内部组件. 上图显示的组件分两个章节解释.第一章讨论针对每个线程创建的组件,第二章节讨论 ...
- ajaxStart()和ajaxStop()
Jquery中当一个Ajax请求启动时,并且没有其他未完成的Ajax请求时,将调用ajaxStart()方法.同样,ajaxStop()方法则是在所有Ajax请求都完成时调用.这些方法的参数都是一个函 ...
- day0203 XML 学习笔记
day02, 03 1. xml语言和作用 2. xml语法详解 2.1 xml 语法声明 2.1.1 encoding 属性 2.1.2 standalone 属性 2.2 xml 元素(Eleme ...