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 ...
随机推荐
- nginx File not found
出现 nginx File not found 错误 首先判断这个文件是否 真的存在 如果文件确实存在 那么应该是 php-fpm 路径有问题了 解决办法 1查看 php-fpm 的配置文件 我的 文 ...
- C语言数组实现约瑟夫环问题,以及对其进行时间复杂度分析
尝试表达 本人试着去表达约瑟夫环问题:一群人围成一个圈,作这样的一个游戏,选定一个人作起点以及数数的方向,这个人先数1,到下一个人数2,直到数到游戏规则约定那个数的人,比如是3,数到3的那个人就离开这 ...
- ajax参数设置略解
通过ajax可以直接由页面访问到服务器.做到不刷新页面,就能刷新数据,为开发带来很大的便利. 1.ajax方式的参数及其功能: $.ajax({ type : "POST", // ...
- CLR线程概览(下)
作者:施懿民链接:https://zhuanlan.zhihu.com/p/20866017来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 同步: 托管代码 托管代码可 ...
- Windows 10 IoT Serials 2 - Windows 10 IoT RTM 升级教程
7月29日,微软推出了Windows 10 for PC的正式版,其版本号是Build 10240.近两天官方说已经有4700万的下载安装量,同时这个数字还在不断攀升.另外,除了Windows 10 ...
- ORA-02266: unique/primary keys in table referenced by enabled foreign keys
在数据库里面使用TRUNCATE命令截断一个表的数据时,遇到如下错误 SQL >TRUNCATE TABLE ESCMOWNER.SUBX_ITEM ORA-02266: unique/prim ...
- ORACLE的SQL JOIN方式小结
在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a query that combines row ...
- 基于Ajax+div的“左边菜单、右边内容”页面效果实现
效果演示: ①默认页面(index.jsp): ②:点击左侧 用户管理 标签下的 用户列表 选项后,右边默认页面内容更新为用户列表页(userList.jsp)的内容 : ③:同理,点击 产品管理.订 ...
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- JavaScript数字精度丢失问题总结
本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 0.1 + 0.2 != ...