jpa, hibernate 和 spring 时配置 ehcache 二级缓存的步骤。

缓存配置

首先在 persistence.xml 配置文件中添加下面内容:

<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
<property name="hibernate.generate_statistics" value="true"/>

EHCache 还需要一些独立的配置,你需要在类路径中放置 ehcache.xml ,文件内容如下:

<cache name="samples.Employee"
maxElementsInMemory="2000"
eternal="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="3600"
overflowToDisk="false"/>

  

实体配置

在映射实体类中声明注解

@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)

 

现在,你已经为一个对象配置了缓存,例如通过类似 loadById 之类的方法就可以使缓存生效,但当需要一些查询或者使用标准查询对象时默认是不使用缓存的,因此我们需要在代码上做一些处理。

查询缓存

为了启用查询缓存,我们需要两个配置,一个是启用 hibernate.cache.user_query_cache,另外一个是设置查询缓存:

Query query = entityManager.createQuery("from " + Employee.class.getName());
query.setHint("org.hibernate.cacheable", true);
return query.getResultList();

  

通过统计来确保缓存起效

执行下面的代码可以打印缓存的统计信息

EntityManagerFactoryInfo entityManagerFactoryInfo =
(EntityManagerFactoryInfo) applicationContext.getBean("entityManagerFactory");
EntityManagerFactory emf = entityManagerFactoryInfo.getNativeEntityManagerFactory();
EntityManagerFactoryImpl emfImp = (EntityManagerFactoryImpl)emf;
System.out.println(emfImp.getSessionFactory().getStatistics());

  

别忘了,上述代码需要在 persistence.xml 中启用 hibernate.generate_statistics

在 JPA、Hibernate 和 Spring 中配置 Ehcache 缓存的更多相关文章

  1. Spring中集成Ehcache缓存

    1.导入依赖包 <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...

  2. C3P0连接池在hibernate和spring中的配置

    首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...

  3. spring中配置缓存—ehcache

    常用的缓存工具有ehcache.memcache和redis,这里介绍spring中ehcache的配置. 1.在pom添加依赖: <!-- ehcache 相关依赖 --> <de ...

  4. 在Spring中配置SQL server 2000

    前言 Lz主要目的是在Spring中配置SQL server 2000数据库,但实现目的的过程中参差着许多SQL server 2000的知识,也包罗在本文记载下来!(Lz为什么要去搞sql serv ...

  5. spring 中配置sessionFactory及用法

    spring 中配置sessionFactory及用法 方法一: 1.在Spring的applicationContext.xml中配置bean <!-- 启用注解注入  -->      ...

  6. spring中配置数据源

    spring中配置数据源的几种常见方式: #mysql 数据库配置(jdbc.properties) jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.u ...

  7. spring中配置监听队列的MQ

    一.spring中配置监听队列的MQ相关信息注:${}是读取propertites文件的常量,这里忽略.绿色部分配置在接收和发送端都要配置.  <bean id="axx" ...

  8. 在Spring中配置jdbc为什么不能用${username}问题

    楼主在spring中配置jdbc时,引用的是dbcp.jar包,在dataSource.properties配置文件中,有mysql用户名,楼主自然的选择了使用username,密码是root, 然后 ...

  9. spring(三、spring中的eheche缓存、redis使用)

    spring(三.spring中的eheche缓存.redis使用) 本文主要介绍为什么要构建ehcache+redis两级缓存?以及在实战中如何实现?思考如何配置缓存策略更合适?这样的方案可能遗留什 ...

随机推荐

  1. 201521123050 《Java程序设计》第10周学习总结

    1. 本周学习总结 2. 书面作业 1.finally,题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? 只有执行过try才会执行finally ...

  2. 201521123001 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 答: 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需 ...

  3. 模拟实现一个ATM+购物商城程序

    记得上次小编上传了一个购物车程序,这次呢稍微复杂一点,还是那句话,上传在这里不是为了炫耀什么,只是督促小编学习,如果大神有什么意见和建议,欢迎指导.(PS:本次主要参考学习为主,自己原创的很少) 要求 ...

  4. JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】

    什么是javaBean JavaBean就是一个普通的java类,也称之为简单java对象–POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基 ...

  5. PHP 安装配置

    ./configure --prefix=/usr/local/php --with-libdir=/lib/x86_64-linux-gnu --with-config-file-path=/usr ...

  6. 虚拟WEB目录的映射原理

    一个文件系统目录可以被映射成为多个虚拟WEB目录,虚拟WEB目录名称可以是多级目录结构的形式,tomca按照最长路径匹配原则处理请求的URL 设置WEB站点的根目录: <Host>元素的a ...

  7. java实现excel和数据的交互

    1. 环境要求 本文环境为: 数据库为oracle,jdk为jdk7,依赖jar包为ojdbc6-11.2.0.4.0.jar+poi-3.14.jar 2.POI 使用 1. 建立工作空间 2. 获 ...

  8. mybatis(三)

    上面2章写了mybatis的基本操作,今天就写写mybatis的动态代理吧. 动态代理有4个基本原则: 1.userMapper.xml里面的namespace="cn.my.dao.Use ...

  9. JAVA设计模式总结之23种设计模式

    上一篇总结了设计模式的六大原则<JAVA设计模式总结之六大设计原则>,这一篇,正式进入到介绍23种设计模式的归纳总结. 一.什么是设计模式                         ...

  10. pygame_第一个窗口程序

    ####可以使用python自带的IDLE交互式开发,也可以借助其他的编辑器,我这里采用的pycharm编辑器 1.导入我们所需要的模块 import pygame,sys   --导入我们需要的模块 ...