hibernate-cache
hibernate缓存分:一级缓存、二级缓存、三级缓存
一级缓存:Session内的缓存
实例:
/*一级缓存:
* session内的缓存
* */
@Test
public void test1(){ /*使用缓存之前,2条结果*/
Session session =HibernateSessionFactory.getSession();
//第一次查询
Emp emp = (Emp) session.load(Emp.class, (short)7369);
System.out.println(emp.getEname()+"\t"+emp.getDept().getDname()); session.close();
//同一个session内,再次获取ID为7639的员工
Emp emp2 = (Emp) session.load(Emp.class, (short)7369);
System.out.println(emp2.getEname()+"\t"+emp2.getDept().getDname()); }
二级缓存:
进程 或集群范围内的缓存。可以被所有session共享,生活周期与SessionFactory一样,
* 二级缓存是可配置的插件,hibernate打包一些开源缓存实现,提供对它们的内置支持
用到的jar包和ehcache.xml
hibernate.cfg.xml配置:
<!--二级缓存配置开始==== -->
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
实体类映射文件Emp.hbm.xml中配置:
<!-- 实体类中二级缓存配置-->
<cache usage="read-write"/>
测试代码:
/*二级缓存:
* 进程 或集群范围内的缓存。可以被所有session共享,生活周期与SessionFactory一样,
* 二级缓存是可配置的插件,hibernate打包一些开源缓存实现,提供对它们的内置支持
* */ @Test
public void test2(){
Session session=HibernateSessionFactory.getSession(); try {
Emp emp = (Emp) session.load(Emp.class, (short)7369);
System.out.println(emp.getEname()+"\t"+emp.getSal());
session.close();
Session session2=HibernateSessionFactory.getSession();
Emp emp2 = (Emp) session2.load(Emp.class, (short)7369);
System.out.println(emp2.getEname()+"\t"+emp2.getSal());
session2.close();
} catch (Exception e) {
e.printStackTrace();
}
}
三级缓存,查询缓存:
hibernate.cfg.xml中配置,所有配置均在二级缓存配置之上加入:
<property name="cache.use_query_cache">true</property>
测试代码:
/*query查询缓存*/
@Test
public void test3(){
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from Emp where empno=7369");
Emp emp = (Emp) query.setCacheable(true).uniqueResult();
System.out.println(emp.getEname()+"\t"+emp.getSal()); session.close();
//在不同的session范围内,现次获取ID=7369的学生信息
Session session2=HibernateSessionFactory.getSession();
Query query2=session.createQuery("from Emp where empno=7369");
Emp emp2 = (Emp) query.setCacheable(true).uniqueResult();
System.out.println(emp2.getEname()+"\t"+emp2.getSal());
}
链接:http://pan.baidu.com/s/1geVPuoV 密码:s3sh
hibernate-cache的更多相关文章
- org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFacto ...
- Invocation of init method failed; nested exception is org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl
严重: Exception sending context initialized event to listener instance of class org.springframework.we ...
- Unable to create requested service org.hibernate.cache.spi.RegionFactory
hibernate 4.3.11+struts2.3.28.1+spring 4.2.5,在搭框架的时候,报的这个错误: Unable to create requested service org. ...
- Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFac
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram ...
- Hibernate缓存之Aop+cache
在上一篇涉及到查询缓存的功能时除了需要在配置文件中开启缓存外,还需要在业务代码中显示调用setCacheable(boolean)才可以打开查询缓存的功能,这样做,无疑是破坏了封装性,所以就诞生了利用 ...
- ehcache-----在spring和hibernate下管理ehcache和query cache
1. 在Hibernate配置文件中设置: <!-- Hibernate SessionFactory --> <bean id="sessionFactory" ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- Struts2+Spring+Hibernate框架整合总结详细教程
一.SSH三大框架知识总结 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...
- Java三大框架之——Hibernate中的三种数据持久状态和缓存机制
Hibernate中的三种状态 瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过 ...
- Hibernate关联映射 映射文件的配置
一:多对一单向关联 首先我们必须创建两个实体类 例如:Dept类 public class Dept { private Integer deptNo; private String dName; p ...
随机推荐
- Linux下安装tar.gz类型的jdk,并配置环境变量
近期因要学习一门技术,必须在Linux下运行,故开始学习如何使用Linux. 在安装jdk时出现了困难,环境变量配置不成功,花了一天时间才搞定,特分享出来,供大家参考. Linux下安装jdk,步骤如 ...
- JQuery.Ajax之错误调试帮助信息
下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求 ...
- db2start启动失败
db2start启动失败 [db2inst1@localhost ~]$ db2start db2start: error while loading shared libraries: libaio ...
- mysql分表的3种方法
来源:http://blog.sina.com.cn/s/blog_640738130100tzeq.html 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死 ...
- java实现文件变化监控
一. spring配置文件:application.xml <?xml version="1.0" encoding="UTF-8"?> <b ...
- 4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法
本文转自迅为4412开发板实战教程书籍:http://www.topeetboard.com 迅为是基于Ubuntu12.04.2平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过 ...
- 探索UDP套接字编程
UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...
- Java IO工作机制分析
Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...
- NOIP2013花匠
描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致. 具体而言, ...
- 脏检查and刷新机构
---恢复内容开始--- 脏检查:当食物提交时,Hiberante会对Session中持久状态的对象进行加测,判断对象的数据是否发生了变化 为什么要进行脏检查?, 解析:如果对象发生了改变,就需要将改 ...