`
finally_m
  • 浏览: 69355 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在 Hibernate中使用ehcache管理二级缓存

阅读更多

EhCache是一个纯JAVA程序,可以在Hibernate中作为一个插件引入。在Hibernate中使用EhCache需要在Hibernate的配置文件中设置如下:

 

<!-- 开启二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true</property> <!-- 设置缓存提供者 --> <property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property> <!-- 是否使用查询缓存 --> <property name="hibernate.cache.use_query_cache">true</property>

 

设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下:

 

 

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
 <diskStore path="c:\\cache"/>  <!--设置cache.data文件存放位置-->
  <defaultCache
   maxElementsInMemory="10000" <!-- 缓存最大数目 -->
   eternal="false" <!-- 缓存是否持久 -->

   overflowToDisk="true" <!-- 是否保存到磁盘,当系统当机时-->

   timeToIdleSeconds="300" <!-- 当缓存闲置n秒后销毁 -->
   timeToLiveSeconds="180" <!-- 当缓存存活n秒后销毁-->
   diskPersistent="false"
   diskExpiryThreadIntervalSeconds= "120"/> <!--设定缓存在硬盘上的生存时间-->
</ehcache>

 

 

注意当eternal="true"

timeToIdleSecondstimeToLiveSecondsdiskExpiryThreadIntervalSeconds都是无效的。

 

此时缓存已经启用了,但是并没有被使用。它不会去自动把所有的实体都进行缓存了,而是需要手动指定哪个实体需要缓存,以及其缓存的策略。有两种方式指定哪些实体类使用缓存。

 

第一种是修改要使用缓存的实体的映射文件。如在User.hbm.xml中使用<cache>标签启用。

 

<hibernate-mapping>
    <class name="cn.ineeke.entity.User" table="t_user">
        <cache usage="read- write "/>
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name"/>
    </class>
</hibernate-mapping>

 

第二种方式是在hibernate.cfg.xml中使用<class-cache>标签指定实体类并启用。

<!-- 指定哪些实体需要使用二级缓存 -->

<class-cache class="com.pojo.User" usage="read-only"/>

 

 

如果需要“查询缓存”,还需要在使用QueryCriteria()时设置其setCacheable(true);属性

Session s=HibernateSessionFactory.getSession();  

Criteria c=s.createCriteria(Resources.class);  

c.setCacheable(true);  

List l=c.list();

……

 

配置log4j.properties文件

#方便看到ehcache的操作过程,主要用于调试过程,实际应用发布时候,请注释掉,以免影响性能。
log4j.logger.org.hibernate.cache=debug

分享到:
评论

相关推荐

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

    并发访问策略是缓存设计的关键,特别是在二级缓存中。事务型策略提供了 Repeatable Read 隔离级别,适用于多读少写的场景,能防止脏读和不可重复读。读写型策略提供 Read Committed 隔离级别,适用于非集群环境,...

    Hibernate EhCache 二级缓存配置.docx

    EhCache 缓存插件是 Hibernate 框架内置的,对于单机应用推荐使用它做为 Hibernate 的二级缓存。 二、环境配置 要使用 EhCache 二级缓存,需要进行以下环境配置: 1. 安装 MySql 5.0 数据库 2. 安装 Hibernate ...

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

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

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

    - **依赖二级缓存**:查询缓存的结果依赖于二级缓存,只有实体对象存在于二级缓存中,查询结果才能被缓存。 - **不保证数据一致性**:查询缓存不提供数据一致性保证,可能存在脏读问题。因此,适用于那些对实时性...

    Hibernate+ehcache二级缓存技术

    Hibernate+ehcache二级缓存技术 Hibernate+ehcache二级缓存技术

    配置EhCache二级缓存

    ### 配置EhCache二级缓存 #### 一、简介 EhCache是一个高性能、易于使用的开源缓存系统,最初由 Terracotta 组织开发。它支持多种缓存模型,包括本地缓存和分布式缓存。由于其简单易用且功能强大,EhCache 成为了 ...

    springmvc4+spring4+hibernate5.1.3+二级缓存ehcache+fastjson配置

    Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...

    Hibernate中二级缓存ehcache缓存案例

    2. **配置hibernate.cfg.xml**:在Hibernate的配置文件中,开启二级缓存支持并指定使用ehcache。添加以下配置: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true &lt;property name="...

    Hibernate4二级缓存Ehcache案例

    Ehcache是Java中广泛使用的内存缓存库,它支持内存和磁盘缓存,具有高效的缓存管理和数据持久化能力,因此被选为Hibernate的二级缓存提供商。要使用Ehcache,我们首先需要在项目中引入Ehcache的依赖。在Maven项目中...

    hibernate+ehcache

    一级缓存是每个 Hibernate Session 的私有缓存,而二级缓存则可以跨 Session 共享,Ehcache 就是常见的二级缓存实现。 7. **事务管理**:在整合 Hibernate 和 Ehcache 时,必须注意事务管理,确保缓存与数据库的...

    SSH三层架构MVC,Hibernate(ehcache)二级缓存技术,源代码

    SSH三层架构MVC(struts1.3+spring2.x+hibernate3.2),Hibernate(ehcache)二级缓存技术,Spring 注解形式依赖注入,ehcache缓存 源代码,内有MySql anbyke.sql文件,方便创建数据库演示效果!

    hibernate缓存ehcache用法

    然后,在Hibernate的配置文件(如hibernate.cfg.xml)中启用二级缓存并指定Ehcache配置文件: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true &lt;property name="hibernate.cache.region....

    Hibernate一级缓存和二级缓存

    1. **全局共享**:所有Session都可以访问二级缓存中的数据,提高了效率。 2. **可配置性**:可以根据不同数据的访问模式和业务需求,为不同的实体和查询结果设置不同的缓存策略。 **使用注意事项** 1. **并发控制*...

    hibernate二级缓存实例

    2. 配置Hibernate:在hibernate.cfg.xml文件中启用二级缓存,并指定使用Ehcache作为二级缓存提供者。 3. 配置实体类:在实体类上使用`@Cacheable`、`@Cache`等注解,声明该类及属性参与缓存。 4. 配置缓存策略:...

    Hibernate4 + Ehcache 例子

    在Hibernate配置中,你需要指定使用Ehcache作为二级缓存提供者。 5. **测试**:`testHibernateCache`这个文件可能包含了一个测试类,用于验证配置是否正确,缓存是否生效。测试通常会涉及创建、读取、更新和删除...

    Hibernate二级缓存

    1. **导入依赖**:首先,你需要添加ehcache库的jar包到项目的类路径中,因为Hibernate通常使用ehcache作为默认的二级缓存提供者。 2. **配置二级缓存**:在`hibernate.cfg.xml`配置文件中,需要指定二级缓存的提供...

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

    当对象在一级缓存中被修改并提交后,Hibernate会根据配置将这些变化同步到二级缓存中。这个过程包括了更新、删除和插入操作。值得注意的是,对于删除操作,Hibernate不仅会移除相应对象,还会清除可能存在的关联对象...

    Ehcache二级缓存.zip

    Ehcache二级缓存允许将一级缓存中的数据溢出到二级缓存,当一级缓存空间不足或者数据被移除时,可以从二级缓存中恢复。这不仅扩展了缓存容量,还确保了数据的持久性。 2. **POM文件**:在描述中提到的"POM"是Maven...

    在Spring+Hibernate集成环境中使用EhCache缓存

    然后,我们需要在Hibernate的配置中启用二级缓存,并指定使用EhCache。在`hibernate.cfg.xml`文件中添加以下配置: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true &lt;property name="...

Global site tag (gtag.js) - Google Analytics