Hibernate <查询缓存>
查询缓存:
定义:查询缓存它是基于二级缓存的,可以保存普通属性查询的结果,查询对象实体时,他会保存id作为键,查询结果作为值,下个对象访问时,可以直接查到
查询缓存查询实体对象时,显著的特点是,会执行多条查询id查询语句
生命周期:当关联的表发生修改,查询缓存的生命周期结束
查询缓存的配置和使用:
1.修改hibernate.cfg
- <!-- 开启查询缓存 默认为false -->
- <property name="hibernate.cache.use_query_cache">false</property>
2.关联实体类跟二级缓存配置一样的
3.在程序中启用:
query.setCacheable(true);
开启查询缓存,关闭二级查询的情况下:
- public void seleCacheTest(){
- try {
- session=HibernateUtil.currentSession();
- session.beginTransaction();
- List grade=session.createQuery("select g from Grade g")
- .setCacheable(true)
- .list();
- for(int i=0;i<grade.size();i++){
- Grade grad=(Grade)grade.get(i);
- System.out.println(grad.getGradename());
- }
- } catch (Exception e) {
- // TODO: handle exception
- }finally{
- HibernateUtil.closeSession();
- }
- System.out.println("-------------");
- try {
- session=HibernateUtil.currentSession();
- session.beginTransaction();
- List grade=session.createQuery("select g from Grade g")
- .setCacheable(true)
- .list();
- for(int i=0;i<grade.size();i++){
- Grade grad=(Grade)grade.get(i);
- System.out.println(grad.getGradename());
- }
- } catch (Exception e) {
- // TODO: handle exception
- }finally{
- HibernateUtil.closeSession();
- }
- }
总结:
itetator不支持查询缓存
list 开启查询缓存时,关闭二级缓存:
在不同session中:第二次查询时,会发出n条查询id
同一session中时,由于一级缓存的作用:所以无论有没有开启查询缓存都只有一条查询语句
list开启查询缓存时,开启二级缓存时:
只执行一条查询语句,因为二级缓存生效了
在缓存知识点中需要注意的:
缓存不能随便用,尽量不用!
在使用缓存时,还需要考虑到脏数据的问题!
各级缓存的特点:
一级缓存,save,get,load,query时都会产生缓存,这是无法禁止的
二级缓存,二级缓存跨session操作,性能比较好,但是不能查询普通属性
查询缓存,以键值对方式存放缓存,必须在程序中创建
Hibernate <查询缓存>的更多相关文章
- Hibernate ——二级缓存
一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...
- 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法
配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...
- 配置Hibernate二级缓存步骤
配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...
- Hibernate 二级缓存 总结整理(转)
和<Hibernate 关系映射 收集.总结整理> 一样,本篇文章也是我很早之前收集.总结整理的,在此也发上来 希望对大家有用.因为是很早之前写的,不当之处请指正. 1.缓存:缓存是什么, ...
- Hibernate(十六):Hibernate二级缓存
Hibernate缓存 缓存(Cache):计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如磁盘上的文件或者数据库)之间,起作用是降低应用程序直接读取永久性数据存储源的频率,从而提高应用 ...
- hibernate二级缓存demo2
@Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...
- hibernate二级缓存整合
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http:// ...
- ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存
ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate : Hibernate是一个持久层框架,经常访问物理数据库 ...
- spring boot集成ehcache 2.x 用于hibernate二级缓存
https://www.jianshu.com/p/87b2c309b776 本文将介绍如何在spring boot中集成ehcache作为hibernate的二级缓存.各个框架版本如下 spring ...
- js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间
*********************************************js相关********************************************* // 在指 ...
随机推荐
- 使用HttpWebrequest对网站进行模拟操作(附登陆百度demo)
// a[href=#viewSource]"); //查看源代码标签 viewSourceArr.attr("title", "查看源代码"); v ...
- 集合中list、ArrayList、LinkedList、Vector的区别、Collection接口的共性方法以及数据结构的总结
List (链表|线性表) 特点: 接口,可存放重复元素,元素存取是有序的,允许在指定位置插入元素,并通过索引来访问元素 1.创建一个用指定可视行数初始化的新滚动列表.默认情况下,不允许进行多项选择. ...
- angularJs之template指令
template: 如果我们只需要在ng-view 中插入简单的HTML 内容,则使用该参数: .when('/computers',{template:'这是电脑分类页面'}) templateUr ...
- Java学习——增强for循环、switch
增强for循环 Java5引入了一种主要用于数组的增强型for循环. 例子 public class ForTest { public static void main(String args[]){ ...
- 加密解密及其javascript实现
前端提交数据到后台,如果不适用https协议,则提交的数据就有被第三者窃取的可能.前端使用js来编码数据主要分为以下三种: 1.摘要算法 2.对称加密 3.非对称加密 下面分别介绍三种算法中对应的一个 ...
- EBS创建相应的用户
登陆EBS,依次点击"System Administrator"-->"Security"-->"User"-->&quo ...
- TCP/IP详解--连接状态变迁图CLOSE_WAIT
终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...
- [翻译] 为什么Uber的数据库从Postgres 切换到 MySql
Uber工程师团队发布了一个重要的博客文章:他们的数据库从Postgres从移动到MySQL.毫不夸张地说,阅读这篇文章是一种享受,特别是因为他们提到这些细节:磁盘格式和那对他们2个数据库的表现的影响 ...
- windows nslookup、tracert 常用命令
nslookup www.baidu.com 可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用哪个DNS服务器进行解释. tracert www.baidu.com 路由
- SecureCRT使用小技巧
SecureCRT使用小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 以前觉得xshell链接工具挺好的,看起来又好耍,图 ...