在不少的项目中,也使用到了Hibernate的二级缓存,现在学习一下在Hibernate里面该如何使用二级缓存,先要把以下的配置信息加到beans.xml里的相应位置:
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=false
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
beans.xml
ehcache这个缓存产品要使用到一个jar文件,是hibernate核心安装包下的:lib\optional\ehcache-1.2.3.jar,Ehcache底下可以定义一个配置文件,Ehcache默认的配置文件ehcache.xml(放在类路径下)
这是缓存的默认的配置,配置好了这个缓存之后,就可以应用到hibernate里面的实体bean了,我们在需要使用缓存的实体bean的映射元数据配置里面添上缓存配置
Person.hbm.xml
这样的话,我们就可以为Person实体bean应用上缓存了,当然我们也可以为cn.itcast.bean.Person这个缓存域来定义一些它的特殊缓存设置,如果不定义的话,就默认使用ehcache.xml里面的<defaultCache/>缓存策略。如果有特别的缓存设置,可以对它进行定义
ehcache.xml
现在已经为Person实体应用上了缓存,我们怎样去检验它目前应用上的缓存呢?我们应用上的缓存可以是这样的:如果一旦缓存里面存在某个id的对象后,当它第二次再去请求相同id的这个对象的时候,它就不会从数据库里获取数据的,而是从内存里面获取到这个缓存对象的,我们根据这点就可以来测试这个缓存是否起作用了?
我们的计划是这样的。。
getPerson(1)
//...把数据库关闭
getPerson(1)
getPerson(1),调用业务bean的getPerson(1)方法获取第一条记录,二级缓存就会把这条记录放到缓存里面去,就是说,当我们第二次再去得到1这个Person的话,它就会从内存里面获取,而不是从数据库里获取。
既然第二次获取是从内存里获取的,也就是说我们在中间把数据库关掉,当第二条getPerson(1)再获取1这个Person,如果说它能获取到,就证明这个对象是从内存获取的,因为这时候数据库已经关闭了,现在就做这么一个实验
PersonServiceTest.java
这个实验主要是证明:当关闭数据库之后,我们再去获取Person2记录,如果它能返回并且正确打印信息,就证明这数据是从缓存(内存)里获取到这对象的,不是从数据库获取对象的,数据库person表如图:
首先要把D:/cache的数据清掉,执行下这个单元测试代码的testGetPerson()方法,其中要手动关闭Mysql数据库,控制台打印出:
李四
请关闭数据库
第二次开始获取
李四
说明:在我们数据库关闭的情况下,它也能获取到person name,也就证明这时候这个对象是从缓存里面获取的。
那么我们二级缓存的应用就已经成功了。二级缓存在企业中也是被大量使用到,所以大家要掌握。
该节代码在此: 为Spring集成的Hibernate配置二级缓存.zip
分享到:
相关推荐
传播智客,为Spring集成的Hibernate配置二级缓存、cache.xml
NULL 博文链接:https://8366.iteye.com/blog/470815
struts2+spring+hibernate集成例子,包含所有jar包,ehcache二级缓存,mysql数据,需要自己创建
struts1.x+spring+hibernate集成例子,包含所有jar包,ehcache二级缓存,数据库mysql,需要自己创建
本篇文章主要介绍了详解spring boot集成ehcache 2.x 用于hibernate二级缓存,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
spring2.5学习PPT 传智...为Spring集成的Hibernate配置二级缓存 30.Spring提供的CharacterEncoding和OpenSessionInView功能 31.使用Spring集成JPA 32.Struts+Spring+JPA集成 33.使用Spring集成Struts2 34.所有源码
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...
这个是在整合JBPM前,先集成SpringMVC3.2和Hibernate4.2的代码,并配置了二级缓存。
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...
4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...
4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
系统可作为OA、网站、电子政务、ERP、CRM、APP后台等基于B/S架构的应用软件系统的快速开发框架。 特色功能 1采用Spring MVC的静态加载缓存...4Hibernate集成二级缓存框架Ehcache。 5数据库是MySQL、Oracle和SQL Serv
5.4 在Spring里集成Hibernate 5.4.1 选择Hibernate的版本 5.4.2 使用Hibernate模板 5.4.3 建立基于Hibernate的DAO 5.4.4 使用Hibernate 3上下文会话 5.5 Spring和Java持久API 5.5.1 使用JPA模板 5.5.2 创建...