当谈到hibernate性能问题的时候,不可不谈的就是hibernate缓存,缓存的范围决定了缓存的生命周期以及该缓存可以被谁访问,缓存的范围可以分为3类,第一个是事物范围(即可以被当前事物所访问),第二个是进程范围(jvm级别)(可以被多个事物所访问),还有就是集群范围(缓存在集群范围内被一台或多台机器进程所共享,缓存里面的数据复制到集群环境中的每个进程节点,进程件通过通信协议来保持数据的一致性),而今天要做的笔记是关于hibernate二级缓存,即属于进程范围和集群范围,在hibernate中二级缓存范围SessionFactory级别的,hibernate本身并没有提供相应的缓存插件,而主要要来自一些缓存策略提供商(Cache Providers),像 HashTable,EHCache,OSCache,SwarmCache,JBossCache
今天主要做下hibernate的EHCache的配置及使用
1.向hibernate.cfg.xml中添加以下配置信息
如果你使用的hibernate3.2版本以下的
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_class"> net.sf.ehcache.hibernate.EhCacheProvider</property>
如果你使用的是更高的版本,则配置文件应该
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
如果在spring中则配置hibernate.properties属性为
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
2.配置缓存映射(主要有xml和anotation两种方式)
映射策略主要有
(1)read-only:如果你的应用程序只需读取一个持久化类的实例,而无需对其修改, 那么就可以对其进行只读 缓
存。这是最简单,也是实用性最好的方法。甚至在集群中,它也能完美地运作。
(2)read-write 如果应用程序需要更新数据,那么使用读/写缓存 比较合适。
(3)nonstrict-read-write 如果应用程序只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),
也不需要十分严格的事务隔离,那么比较适合使用非严格读/写缓存策略
(还有种映射策略transactional,EHCache不支持)
在使用EHCache时,当采用xml时,你需要为实体配置相应的缓存使用策略,例如com.somecompany.someproject.domain.Country使用缓存策略
<hibernate-mapping>
<class
name="com.somecompany.someproject.domain.Country"
table="ut_Countries"
dynamic-update="false"
dynamic-insert="false"
>
...
</class>
</hibernate-mapping>
使用annotation的配置则为
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Country {
...
}
3.配置ehcache.xml
默认情况下ehcache.xml有个默认的缓存配置,你也可以为某个类单独配置cache,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="D:\\temp" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" />
<cache name="com.somecompany.someproject.domain.Country" maxEntriesLocalHeap="10000"
eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
overflowToDisk="true" />
</ehcache>
4.使用
如何使用,下面举个例子
public List getStreetTypes(final Country country) throws HibernateException {
final Session session = createSession();
try {
final Query query = session.createQuery(
"select st.id, st.name"
+ " from StreetType st "
+ " where st.country.id = :countryId "
+ " order by st.sortOrder desc, st.name");
query.setLong("countryId", country.getId().longValue());
query.setCacheable(true);(**这里必须指定为true,在使用Criteria也同理**)
query.setCacheRegion("query.StreetTypes");
return query.list();
} finally {
session.close();
}
}
这样二级缓存便轻松的嵌入到你的应用中去了,用log4j便可详细查看调试信息.
分享到:
相关推荐
在Spring Boot的基础上,我们常常会整合其他技术,如Hibernate和Ehcache,来构建高效的数据存储和缓存解决方案。Maven作为Java项目的构建工具,负责管理项目的依赖关系。在这个源码包中,我们将探讨如何将这些组件...
Hibernate EhCache 二级缓存配置 Hibernate EhCache 二级缓存配置是 Hibernate 框架中的一种缓存机制,它可以提高应用程序的性能和效率。下面是关于 Hibernate EhCache 二级缓存配置的详细知识点: 一、简介 ...
【标题】:“Hibernate + Ehcache 整合使用详解” 【描述】:“Hibernate 是一款流行的 Java 持久层框架,而 Ehcache 是一个高效的分布式内存缓存系统。将两者结合,能够极大地提升应用的性能,减少数据库的负载,...
在IT行业中,Spring、Struts2和Hibernate是Java企业级应用开发中常见的三大框架,而Ehcache则是一个广泛使用的缓存解决方案。这篇博客“spring struts2 hibernate ehcache整合”显然探讨了如何将这四个组件集成到同...
在Java Web开发领域,Spring、Spring MVC、Hibernate和Ehcache是四个非常关键的框架,它们共同构建了一个强大且高效的后台开发环境。下面将详细解释这些框架的核心功能和使用方式。 1. **Spring框架**:Spring是...
《深入理解Hibernate与Ehcache整合机制》 在Java企业级开发中,数据持久化是不可或缺的一环,而Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,随着应用程序规模的扩大,数据量的...
这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。缓存是一种存储技术,用于临时保存经常访问的数据,以减少对主存储器(如数据库)的...
总结起来,本文介绍了如何结合Hibernate和EhCache实现数据缓存,涉及了Hibernate配置、EhCache配置、实体类缓存注解以及缓存功能的测试。理解并实践这些知识点,有助于开发出更高效、响应更快的Java应用。
【标题】"hibernate-ehcache-4.1.4.Final.zip" 提供的是Hibernate ORM框架的一个版本,其中集成了Ehcache作为二级缓存解决方案。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员将数据库操作转化...
在Java后台开发中,Spring、Spring MVC、Hibernate和Ehcache是四个非常关键的框架,它们各自承担着不同的职责并协同工作,构建出高效、稳定且可扩展的应用系统。 Spring框架是Java企业级应用的核心框架,它提供了一...
spring+springmvc+hibernate+ehcache JavaWeb后台框架,不仅提高了开发程序的速度,且其中还是用到hibernate和ehcache缓存的使用,加快了程序运行的数据,该框架亲测好用。值得注意的是该种框架现在还算是用的比较多...
Spring,Spring MVC,Hibernate,以及Ehcache是Java开发中常用的四大框架,它们共同构建了高效、稳定的后台应用体系。 Spring框架是Java企业级应用的事实标准,它提供了一个全面的编程和配置模型,用于简化企业级...
该包是hibernate中所用的一个包,专门用来去处理特定的问题,它是和ehcache一起用的一个包
Spring、Hibernate和Ehcache是Java开发中常用的三个框架,它们在企业级应用开发中扮演着重要的角色。Spring是一个全面的后端应用框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性;...
【Spring3 Hibernate4 Ehcache整合实例详解】 在Java企业级应用开发中,Spring、Hibernate和Ehcache是三个非常重要的框架和技术。Spring作为轻量级的IoC(Inversion of Control)和AOP(Aspect Oriented ...
当Hibernate与Ehcache整合时,能够实现数据的快速访问,减少对数据库的直接访问,从而提高系统的响应速度。 **1. Hibernate概述** Hibernate是Java开发中的一个关键工具,它提供了一种在Java应用和关系型数据库之间...
hibernate-ehcache-4.1.0.Final.jar 是hibernate4.1使用缓存的jar包
为了在Hibernate中启用Ehcache,开发者需要在Hibernate的配置文件(如hibernate.cfg.xml)中指定Ehcache作为二级缓存提供者,并配置相关的缓存策略。同时,还需要在项目的类路径下包含这些jar包,以确保运行时能够...
标题 "Hibernate4 + Ehcache 例子" 暗示了我们将探讨如何在Java应用程序中集成Hibernate4 ORM框架和Ehcache缓存系统。这个例子可能是关于如何提高数据访问性能,通过缓存策略来减少数据库查询的次数。 描述中的链接...
6.Hibernate继承 HibernateDaoSupport。 7.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 2)Demo 导入说明: 1.Eclipse Encoding:GBK 2.Eclipse 导入后可能需要在 Xml Catalog 手动添加:ehcache-...