zoukankan      html  css  js  c++  java
  • Hibernate+ehcache二级缓存

    1、  首先导包ehcache-1.2.3.jar,放在WEB-INF/lib中。

    2、  设置ehcache.xml,默认的位置在class-path,可以放在你的src目录下:

    <ehcache>

    <!--

        <diskStore path="java.io.tmpdir"/> 

        -->

        <diskStore path="e:\\cache"/>

        <defaultCache

                maxElementsInMemory="10000"<!-- 缓存最大数目 -->

                eternal="false"<!-- 缓存是否持久 -->

                timeToIdleSeconds="60"<!-- 当缓存闲置n秒后销毁 -->

                timeToLiveSeconds="60"<!-- 当缓存存活n秒后销毁-->

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

                diskPersistent="false"

                diskExpiryThreadIntervalSeconds="120"          

                />

    </ehcache>

    3、  在hibernate.cfg.xml中添加如下代码:

    <!-- 设置Hibernate的缓存接口类,这个类在Hibernate包中 -->    

    <property name="hibernate.cache.provider_class">

               org.hibernate.cache.EhCacheProvider

           </property>

    <!-- 是否使用查询缓存 –

    说明:如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置hibernate.cache.use_query_cache true 才行.

    -->   

    <property name="hibernate.cache.use_query_cache">true</property>

    4、Hibernate在默认情况下并不会对所有实体对象进行缓存,所以,我们需要指定缓存哪些对象, 在实体对象的映射文件中(相应的<class>标签内部),添加如下配置:   

    <cache usage="read-only"/>     

    usage="read-only"是“只读”缓存策略。     

    注意,这个<cache>标签只能放在<class>标签的内部,而且必须处在<id>标签的前面!这个<cache>标签放在哪些<class>标签下面,就说明会多这些类的对象进行缓存

    对于第4步,有一个可选的方案在hibernate.cfg.xml文件中指定哪些类的对象需要缓存,而不需要使用<cache>标签来指定。如在hibernate.cfg.xml中添加如下配置:

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

    注意,这个<class-cache>标签必须放在<mapping>标签的后面!!

  • 相关阅读:
    20200721训练记录
    20200717训练记录
    打家劫舍III(力扣第337题)
    HBase API的删除数据操作的分析
    相交链表(第160题)
    删除排序链表中的重复元素(第83题)
    合并两个有序链表(力扣第21题)
    删除链表的倒数第N个节点(第19题)
    HBase的架构原理
    回文链表、链表求和(234、445)
  • 原文地址:https://www.cnblogs.com/zhouwenwu/p/2336465.html
Copyright © 2011-2022 走看看