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

hibernate 使用二级缓存 配置

 
阅读更多
配置二级缓存主要有两个步骤。
  选择需要使用第三方二级缓存组件(如EHCache、Memcached等),在基于JPA
注解实体对象或SessionFactory的配置中定义缓存策略。
  配置所选第三方缓存组件的配置文件。每种缓存组件都有自己的配置文件,因此
需要手工编辑它们的配置文件,并将它们放置在类路径下。对于EHCache来说,其配置文
件为ehcache.xml,而JBossCache的配置文件为treecache.xml。
我们采用EHCache缓存实现方案,首先我们通过SessionFactory的配置启用二级缓存
并定义缓存策略,这需要我们调整baobaotao-dao.xml对于sessionFactory Bean的配置。
代码清单17-11   baobaotao-dao.xml
…  
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            …
    <property name="hibernateProperties">
      <props>
17.4   持久层开发
  760
        …
<!--①  使用EHCache缓存实现方案-->
        <prop key="hibernate.cache.provider_class">
          org.hibernate.cache.EhCacheProvider
        </prop>
        <prop key="hibernate.cache.use_query_cache">true</prop>
      </props>
    </property>
<!--②  配置缓存策略-->
    <property name="entityCacheStrategies">
      <props>
        <prop key="com.baobaotao.domain.Board">
nonstrict-read-write,fixedRegion
</prop>
        <prop key="com.baobaotao.domain.User">
nonstrict-read-write,freqChangeRegion
</prop>
        <prop key="com.baobaotao.domain.Topic">read-write,freqChangeRegion</prop>
        <prop key="com.baobaotao.domain.Post">read-write,freqChangeRegion</prop>
      </props>
    </property>
</bean>  

在①处,启用了二级缓存,通过hibernate.cache.provider_class指定了缓存实现类。这
里,我们使用EHCache实现方案。在②处定义了缓存策略,Board使用fixedRegion 缓存
区,这个缓存区中使用的对象永不过期且使用内存缓存。而User、Topic以及Post则使用
freqChangeRegion缓存区,因为它们数目较大,而且较易发生更改。
为了保证EHCache能够正常启用,我们需要将EHCache的类包复制到chapter17/
WebRoot/WEB-INF/lib 目录下,你可以在<Spring>/lib/ehcache/ehcache-1.2.4.jar中找到这个
类包。最后,还需要配置EHCache的配置文件,将其命名为ehcache.xml并放置到类路径
下(chapter17/ src/main/resources/)。来看一下ehcache.xml的配置内容。
代码清单17-12   ehcache.xml
<ehcache>
  <diskStore path="java.io.tmpdir" />
  <defaultCache maxElementsInMemory="10000" eternal="false"
    overflowToDisk="false" timeToIdleSeconds="0" timeToLiveSeconds="0"
    diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />

<!--①存放Board的缓存区-->
<cache name="fixedRegion" maxElementsInMemory="100"
eternal="true" overflowToDisk="false"/>

<!--②  存放User、Topic和Post的缓存区-->
<cache name="freqChangeRegion" maxElementsInMemory="5000" eternal="false"
    overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="1800"/>
</ehcache>

  761
第17章  实战案例开发
在①处定义的fixedRegion 缓存区不使用硬盘缓存,所有对象都在内存中,缓存区中
的对象永不过期,这非常适合缓存类似于Board的实例。在②处定义的freqChangeRegion
缓存区使用硬盘缓存,对象在闲置300秒后就从缓存中清除,且对象的最大存活期限为30
分钟,缓存区中最大的缓存实例个数为5000个,超出此限的实例将被写到硬盘中。这样,
我们就完成了Hibernate二级缓存的所有配置,当启用Spring时,二级缓存就会开始工作了。
需要注意的是,上述配置的EHCache只支持单机缓存(更改ehcache.xml配置,可以
支持分布式集群),也就是在群集环境中,每个应用节点的缓存都是相互独立、无法共享
的,这造成缓存命中率不高。如果Hibernate二级缓存要运行在群集环境中,需要第三方
缓存组件支持集群能力,目前比较常用的有EHCache、Memcached、JBossCache。其中
EHCache、JBossCache是基于Java语言的高效缓存组件,它们都支持分布式集群,支持多
种方式(JGroup)进行应用节点缓存的同步,缓存可以存储在内存或硬盘中。Memcached
服务端是基于C语言的高性能集中式缓存组件,客户端支持多种语言如Java、C、PHP等,
缓存只能存储在内存中。与分布式缓存不同的是,集中式缓存为每个应用节点提供统一的
缓存服务,因此每个应用节点不涉及缓存同步问题。
分享到:
评论

相关推荐

    Spring集成的Hibernate配置二级缓存

    以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml &lt;property name="hibernate.cache.use_...

    为Spring集成的Hibernate配置二级缓存

    在Java企业级开发中,Spring和Hibernate是两个非常...3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,配置Hibernate SessionFactory,并注入二级缓存配置。以下是一个配置示例: ```xml ...

    hibernate5.1二级缓存包

    2. **配置**:在 Hibernate 的配置文件(如 hibernate.cfg.xml)中启用二级缓存,并指定使用的缓存提供商。例如,如果使用 Ehcache,需要设置 `&lt;property name="hibernate.cache.use_second_level_cache"&gt;true...

    hibernate一级和二级缓存配置与详解

    本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...

    hibernate一级缓存和二级缓存的区别与联系

    二级缓存可以通过设置不同的并发访问策略来解决并发问题,如事务型、读写型或非严格读写型,以适应不同场景下的需求。 持久化层的缓存范围决定了缓存的生命周期和访问权限。事务范围的缓存最安全,但只限于当前事务...

    Hibernate二级缓存

    Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    以下是一个简单的二级缓存配置示例: ```xml &lt;hibernate-configuration&gt; &lt;!-- 配置缓存插件 --&gt; &lt;property name="hibernate.cache.region.factory_class"&gt;org.hibernate.cache.ehcache.EhCacheRegionFactory ...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...

    Hibernate4二级缓存实例(源码)

    3. **Hibernate与memcached集成**:将memcached作为Hibernate二级缓存的提供者,需要配置相应的插件或库,如hibernate-ehcache或hibernate-memcached。集成过程通常包括配置Hibernate的配置文件(hibernate.cfg.xml...

    hibernate二级缓存实例

    总的来说,"hibernate二级缓存实例"是一个很好的学习资源,它可以帮助我们理解二级缓存的工作机制,掌握如何在项目中配置和使用,以及注意潜在的问题和优化策略。通过实践,我们可以更好地运用这一技术,提升Java...

    Hibernate EhCache 二级缓存配置.docx

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

    hibernate开启二级缓存和查询缓存

    Hibernate 是一个流行的对象关系...通过以上内容,我们可以了解到 Hibernate 的二级缓存和查询缓存机制,以及如何在实际应用中配置和使用它们。合理利用这些缓存技术,能有效提升应用程序的性能,减轻数据库的压力。

    hibernate二级缓存要导入的包

    本压缩包提供的资源应该包含了实现Hibernate二级缓存所需的关键组件和库文件。 一级缓存是Hibernate Session内的缓存,它是每个Session实例独有的,当Session关闭时,一级缓存中的数据也会被清除。而二级缓存则是一...

    hibernate 二级缓存详解

    总结来说,Hibernate的二级缓存是提升性能的关键手段,通过合理配置和使用,可以有效减少数据库交互,提高应用响应速度。需要注意的是,二级缓存虽然强大,但也需谨慎使用,防止数据一致性问题,尤其是在高并发环境...

    hibernate4.0使用二级缓存jar包

    -- 查询的二级缓存配置 --&gt; &lt;property name="hibernate.cache.use_query_cache"&gt;true &lt;property name="cache.provider_class"&gt;org.hibernate.cache.EhCacheProvider 4.0配置如下: &lt;property name="hibernate...

    hibernate一级缓存、二级缓存和查询缓存

    - **配置复杂**:二级缓存需要在Hibernate配置文件中指定缓存提供商,并对实体类进行配置,以便它们能够参与缓存。 - **缓存策略**:二级缓存支持不同的缓存策略,如读写策略、只读策略、定时刷新策略等,可以根据...

    Spring4+Hibernate4二级缓存实例源码

    本实例源码着重展示了如何在Spring4和Hibernate4中配置并使用二级缓存。 首先,我们需要理解什么是二级缓存。在Hibernate中,一级缓存是每个Session级别的,它存储了当前Session中所有持久化对象的副本,当Session...

    hibernate二级缓存示例源码

    综上所述,通过学习`hibernate二级缓存示例源码`,我们可以了解到如何在实际项目中配置和使用Hibernate二级缓存,从而提升系统的性能。在实际应用中,应结合具体场景选择合适的缓存策略,以达到最佳的性能优化效果。

    hibernate二级缓存

    在Spring框架中管理SessionFactory时,可以在配置文件中添加相应的bean定义,指定数据源、Hibernate属性以及二级缓存的相关设置。例如,`hibernate.cache.use_query_cache`属性可以开启查询缓存,进一步优化性能。 ...

    hibernate的一级缓存和二级缓存

    二级缓存的管理则涉及更多的策略,包括选择哪些持久化类使用缓存,设置并发访问策略,以及选择合适的缓存适配器和数据过期策略。 在实际开发中,合理利用一级缓存和二级缓存,可以有效减少数据库的I/O操作,提高...

Global site tag (gtag.js) - Google Analytics