Hibernate+EhCache配置二级缓存

步骤:

第一步:加入ehcache.jar

第二步: 在src目录下新建一个文件,名为:ehcache.xml

第三步:在hibernate配置文件的<session-factory>下配置

配置的具体信息:

ehcache.xml的具体配置:

<?xml version="1.0" encoding="UTF-8"?>
<!--
      maxEntriesLocalHeap: 在内存中缓存的element的最大数目。
      maxEntriesLocalDisk: 在磁盘上缓存的element的最大数目,默认值为0,表示不限制。
      eternal: 设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,
                  如果为false那么还要根据timeToIdleSeconds,timeToLiveSeconds判断。
      timeToIdleSeconds="10"  缓存空闲时间   默认值0 一直存活
      timeToLiveSeconds="15"  缓存最大存活时间    默认值0 一直存活
      diskExpiryThreadIntervalSeconds:磁盘数据的有效时间
      memoryStoreEvictionPolicy="LFU"
          FIFO ,first in first out (先进先出).
        LFU , Less Frequently Used (最少使用).意思是一直以来最少被使用的。缓存的元素有一个hit 属性,hit
               值最小的将会被清出缓存。
        LRU ,Least Recently Used(最近最少使用). (ehcache 默认值).缓存的元素有一个时间戳,当缓存容量满了,
                而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
      <persistence strategy="localTempSwap"/>  内存存满后将数据存入硬盘
 -->

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd">

    <!-- <diskStore path="java.io.tmpdir"/> -->
    <diskStore path="E:\\cache4"/>
    <defaultCache
            maxEntriesLocalHeap="2"
            maxEntriesLocalDisk="10000000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            diskSpoolBufferSizeMB="30"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU">
        <persistence strategy="localTempSwap"/>
    </defaultCache>
</ehcache>

在hibernate中的配置:

<!-- 开启二级缓存 -->
 <property name="hibernate.cache.use_second_level_cache">true</property>
 <!-- 二级缓存类别:EhCache,OSCache,JbossCache -->
 <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
时间: 2024-10-12 20:29:16

Hibernate+EhCache配置二级缓存的相关文章

mybatis(4)_二级缓存深入_使用第三方ehcache配置二级缓存

增删改对二级缓存的影响 1.增删改也会清空二级缓存 2.对于二级缓存的清空实质上是对value清空为null,key依然存在,并非将Entry<k,v>删除 3.从DB中进行select查询的条件是: 1.缓存中根本不存在这个key 2.存在key对应的Entry,但是value为null 二级缓存的配置 <cache eviction="FIFO" flushInterval="60000" size="512" readOn

Hibernate4.1.4配置二级缓存EHCache步骤

1.当然首先引入EHCache相关的jar包 这些包不需要另外下载,在Hibernate官方网站下载Hibernate4.1.7的压缩包(如:hibernate-release-4.1.7.Final.zip)解压,引入hibernate-release-4.1.7.Final\hibernate-release-4.1.7.Final\lib\optional\ehcache目录下的ehcache-core-2.4.3.jar.hibernate-ehcache-4.1.4.Final.jar

Hibernate的一级二级缓存机制配置与测试

特别感谢http://www.cnblogs.com/xiaoluo501395377/p/3377604.html 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别).二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题. 随笔虽长,但我相信看完的朋友绝对能对hibernate的 N+1问题以及缓存有更深的了解. 一.N+1问题 首先我们来探讨一下N+1的问题,我们先通过一个例子来看一下,什么是N+1问题: list(

hibernate一级和二级缓存介绍

一级缓存Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存Hibernate一级缓存又称为"Session的缓存",它是内置的,不能被卸载(不能被卸载的意思就是这种缓存不具有可选性,必须有的功能,不可以取消session缓在第一级缓存中,持久化类的每个实例都具有唯一的OID存 .在缓存中的对象,具有持久性,session对象负责管理.一级缓存的优点是使用同一个session对象多次查询同一个数据对象,仅对数据库查询一次例如:session.load

具体解释Hibernate中的二级缓存

1.前言 这篇博客再前几篇博客的基础上来解说一下.Hibernate中的二级缓存.二级缓存是属于SessionFactory级别的缓存机制. 第一级别的缓存是Session级别的缓存,是属于事务范围的缓存,由Hibernate管理,一般无需进行干预.第二级别的缓存是SessionFactory级别的缓存.是属于进程范围的缓存. 2.Hibernate二级缓存 1.分类 二级缓存也分为了两种 内置缓存:Hibernate自带的,不可卸载,通常在Hibernate的初始化阶段,Hibernate会把

SSH整合配置二级缓存

一.了解 Hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但session关闭时,一级缓存失效. 二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache.oscache等 对缓存若想进步了解可参考以下网址http://www.360doc.com/content/10/0917/17/2560742_54412898.shtml 二.配置 1.在applicationC

详解Hibernate中的二级缓存

1.前言 这篇博客再前几篇博客的基础上来讲解一下,Hibernate中的二级缓存,二级缓存是属于SessionFactory级别的缓存机制.第一级别的缓存是Session级别的缓存,是属于事务范围的缓存,由Hibernate管理,一般无需进行干预.第二级别的缓存是SessionFactory级别的缓存,是属于进程范围的缓存. 2.Hibernate二级缓存 1.分类 二级缓存也分为了两种 内置缓存:Hibernate自带的,不可卸载,通常在Hibernate的初始化阶段,Hibernate会把映

Spring 整合 Hibernate 时启用二级缓存实例详解

写在前面: 1. 本例使用 Hibernate3 + Spring3: 2. 本例的查询使用了 HibernateTemplate: 1. 导入 ehcache-x.x.x.jar 包: 2. 在 applicationContext.xml 文件中找到 sessionFactory 相应的配置信息并在设置 hibernateProperties 中添加如下代码: ? 1 2 3 4 5 6 <!-- 配置使用查询缓存 --> <prop key="hibernate.cach

Hibernate笔记④--一级二级缓存、N+1问题、saveorupdate、实例代码

一级缓存及二级缓存 一级缓存也是Session 缓存 ????一个链接用户的多次查询使用缓存 ????跨用户 则无缓存 ????hibernate自带的 get和load都会填充并利用一级缓存 二级缓存(需要我们自己配置) ????SessionFactory 缓存 ????可以跨用户的 ? list 方法会使用一级缓存 ,但是不会填充一级缓存 iterator会填充过一级缓存 耗时的 ? N+1问题 当我们使用iterate 进行迭代 又要使用内部的数据,则会发送1+n条sql 第一条先loa