Hibernate二级缓存插件EHCache的配置

来源:互联网 发布:mac 照片 相簿 编辑:程序博客网 时间:2024/05/19 13:28

今天学了一个二级缓存的配置,记录下来,以后有用的时候在来查!

1、EHCache插件的配置,配置其自带的配置文件ehcache.xml到src目录下,并且编写ehcache.xml文件

<ehcache>

<!-- 缓存存放路径,这里是默认的,也可以自己定义 -->
    <diskStore path="java.io.tmpdir"/>

<!--
        maxElementsInMemory:允许缓存可以存储的总记录数
        eternal:当前缓存是否永远不过期
        timeToIdleSeconds:当前缓存最大闲置时间,超过该时间则销毁缓存
        timeToLiveSeconds:设置缓存超时时间,当缓存创建达到该时间就知道销毁
        overflowToDisk:当前缓存中的数据达到最大值时,是否把缓存数据写入到本地磁盘
     -->
     <!--
         这是默认缓存,也可以用<cache name="sampleCache1"/>
         自定义缓存
      -->
    <defaultCache  
        maxElementsInMemory="1"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />

</ehcache>

还需要添加两个相应的包

commons-logging-1.0.4.jar、ehcache-1.2.3.jar

2、在Hibernate配置文件中开启ehcache二级缓存管理

<!-- 打开二级缓存 -->
    <property name="cache.use_second_level_cache">true</property>
    <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

配置测试使用的POJO类

注意:配置的时候一定要到原文件中copy,或者把前配置好的信息copy过来,否则很严重,错误是很难找的
   
3、在实体类中开启缓存

在<class></class>标签中,在<id/>标签上面加

<cache usage="read-write"/>这个标签

4、测试方法

/**
     * 配置完二级缓存后,读取数据库数据,只要不保存就行
     * @throws Exception
     */
    @Test
    public void testCache() throws Exception {
        Session session = HibernateUtils.getSession();
        Transaction tx = session.beginTransaction();
        Login login = (Login) session.get(Login.class, 1);
        
        tx.commit();
        HibernateUtils.closeSession();
    }

这里用的是Junit测试框架,需要导入相应的jar包

测试不报错,基本上都OK。

5、查询缓存

在Hibernate配置文件中配置

<!-- 查询缓存,有人也说三级缓存,看到不要奇怪 -->
    <property name="hibernate.cache.use_query_cache">true</property>

/**
         * 在程序中手动设置查询缓存
         */
        query.setCacheable(true);


0 0
原创粉丝点击