`
javapolo
  • 浏览: 131601 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate ehcache

 
阅读更多

当谈到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 整合源码

    在Spring Boot的基础上,我们常常会整合其他技术,如Hibernate和Ehcache,来构建高效的数据存储和缓存解决方案。Maven作为Java项目的构建工具,负责管理项目的依赖关系。在这个源码包中,我们将探讨如何将这些组件...

    Hibernate EhCache 二级缓存配置.docx

    Hibernate EhCache 二级缓存配置 Hibernate EhCache 二级缓存配置是 Hibernate 框架中的一种缓存机制,它可以提高应用程序的性能和效率。下面是关于 Hibernate EhCache 二级缓存配置的详细知识点: 一、简介 ...

    hibernate+ehcache

    【标题】:“Hibernate + Ehcache 整合使用详解” 【描述】:“Hibernate 是一款流行的 Java 持久层框架,而 Ehcache 是一个高效的分布式内存缓存系统。将两者结合,能够极大地提升应用的性能,减少数据库的负载,...

    spring struts2 hibernate ehcache整合

    在IT行业中,Spring、Struts2和Hibernate是Java企业级应用开发中常见的三大框架,而Ehcache则是一个广泛使用的缓存解决方案。这篇博客“spring struts2 hibernate ehcache整合”显然探讨了如何将这四个组件集成到同...

    spring,spring mvc,hibernate,ehcache JavaWeb后台框架

    在Java Web开发领域,Spring、Spring MVC、Hibernate和Ehcache是四个非常关键的框架,它们共同构建了一个强大且高效的后台开发环境。下面将详细解释这些框架的核心功能和使用方式。 1. **Spring框架**:Spring是...

    hibernate+ehcache jar包

    《深入理解Hibernate与Ehcache整合机制》 在Java企业级开发中,数据持久化是不可或缺的一环,而Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,随着应用程序规模的扩大,数据量的...

    hibernate缓存ehcache用法

    这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。缓存是一种存储技术,用于临时保存经常访问的数据,以减少对主存储器(如数据库)的...

    Hibernate + EhCache 实现数据缓存的处理

    总结起来,本文介绍了如何结合Hibernate和EhCache实现数据缓存,涉及了Hibernate配置、EhCache配置、实体类缓存注解以及缓存功能的测试。理解并实践这些知识点,有助于开发出更高效、响应更快的Java应用。

    hibernate-ehcache-4.1.4.Final.zip

    【标题】"hibernate-ehcache-4.1.4.Final.zip" 提供的是Hibernate ORM框架的一个版本,其中集成了Ehcache作为二级缓存解决方案。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员将数据库操作转化...

    spring、 spring mvc、 hibernate、 ehcache Java后台框架

    在Java后台开发中,Spring、Spring MVC、Hibernate和Ehcache是四个非常关键的框架,它们各自承担着不同的职责并协同工作,构建出高效、稳定且可扩展的应用系统。 Spring框架是Java企业级应用的核心框架,它提供了一...

    spring+springmvc+hibernate+ehcache JavaWeb后台框架

    spring+springmvc+hibernate+ehcache JavaWeb后台框架,不仅提高了开发程序的速度,且其中还是用到hibernate和ehcache缓存的使用,加快了程序运行的数据,该框架亲测好用。值得注意的是该种框架现在还算是用的比较多...

    spring,spring mvc,hibernate,ehcache Java后台框架

    Spring,Spring MVC,Hibernate,以及Ehcache是Java开发中常用的四大框架,它们共同构建了高效、稳定的后台应用体系。 Spring框架是Java企业级应用的事实标准,它提供了一个全面的编程和配置模型,用于简化企业级...

    hibernate-ehcache-4.3.9.Final.jar

    该包是hibernate中所用的一个包,专门用来去处理特定的问题,它是和ehcache一起用的一个包

    Spring+Hibernate+ehcache整合

    Spring、Hibernate和Ehcache是Java开发中常用的三个框架,它们在企业级应用开发中扮演着重要的角色。Spring是一个全面的后端应用框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性;...

    spring3 hibernate4 ehcache实例

    【Spring3 Hibernate4 Ehcache整合实例详解】 在Java企业级应用开发中,Spring、Hibernate和Ehcache是三个非常重要的框架和技术。Spring作为轻量级的IoC(Inversion of Control)和AOP(Aspect Oriented ...

    hibernate整合ehcache的jar包.zip

    当Hibernate与Ehcache整合时,能够实现数据的快速访问,减少对数据库的直接访问,从而提高系统的响应速度。 **1. Hibernate概述** Hibernate是Java开发中的一个关键工具,它提供了一种在Java应用和关系型数据库之间...

    hibernate-ehcache-4.1.0.Final.jar

    hibernate-ehcache-4.1.0.Final.jar 是hibernate4.1使用缓存的jar包

    hibernate所需的ehcache的相关jar包,一共3个jar包

    为了在Hibernate中启用Ehcache,开发者需要在Hibernate的配置文件(如hibernate.cfg.xml)中指定Ehcache作为二级缓存提供者,并配置相关的缓存策略。同时,还需要在项目的类路径下包含这些jar包,以确保运行时能够...

    Hibernate4 + Ehcache 例子

    标题 "Hibernate4 + Ehcache 例子" 暗示了我们将探讨如何在Java应用程序中集成Hibernate4 ORM框架和Ehcache缓存系统。这个例子可能是关于如何提高数据访问性能,通过缓存策略来减少数据库查询的次数。 描述中的链接...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    6.Hibernate继承 HibernateDaoSupport。 7.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 2)Demo 导入说明: 1.Eclipse Encoding:GBK 2.Eclipse 导入后可能需要在 Xml Catalog 手动添加:ehcache-...

Global site tag (gtag.js) - Google Analytics