1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class-path,可以放到你的src目录下:?xml version=1.0 encoding=UTF-8?ehcache ... - Discuz! Board
  
1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class-path,可以放到你的src目录下:





      

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

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

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

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

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

     memoryStoreEvictionPolicy="LRU"  <!-- 最近最少使用策略-->

      />

        

2、在Hibernate配置文件中设置:

 true

    100

    50

   

     true

   


    true

   

     org.hibernate.cache.EhCacheProvider

   


   

     classpath:ehcache.xml

   
3、在Hbm文件中首行下添加

  4使用spring模板时加


class="org.springframework.orm.hibernate3.HibernateTemplate">









true






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

ehcache不支持transactional,其他三种可以支持。
read-only:无需修改, 那么就可以对其进行只读 缓存,注意,在此策略下,如果直接修改数据库,即使能够看到前台显示效果,但是将对象修改至cache中会报error,cache不会发生作用。另:删除记录会报错,因为不能在read-only模式的对象从cache中删除。
read-write:需要更新数据,那么使用读/写缓存 比较合适,前提:数据库不可以为serializable transaction isolation level(序列化事务隔离级别)
nonstrict-read-write:只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离,那么比较适合使用非严格读/写缓存策略。
 文章来源:http://jdh.javaeye.com/blog/198726