1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class-path,可以放到你的src目录下:?xml version=1.0 encoding=UTF-8?ehcache ... - Discuz! Board
1、首先设置EhCache,建立配置文件ehcache.XML,默认的位置在class-path,可以放到你的src目录下:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<cache name="cache1"
maxElementsInMemory="10000"<!-- 缓存最大数目 -->
eternal="false" <!-- 缓存是否持久 -->
overflowToDisk="true" <!-- 是否保存到磁盘,当系统当机时-->
timeToIdleSeconds="300" <!-- 当缓存闲置n秒后销毁 -->
timeToLiveSeconds="500" <!-- 当缓存存活n秒后销毁-->
memoryStoreEvictionPolicy="LRU" <!-- 最近最少使用策略-->
/>
</ehcache>2、在Hibernate配置文件中设置:
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">100</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.cache.use_second_level_cache">
true
</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="net.sf.ehcache.configurationResourceName">
classpath:ehcache.xml
</prop>3、在Hbm文件中<class>首行下添加
<cache usage="read-only" region="cache1"/>4使用spring模板时加
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="cacheQueries">
<value>true</value>
</property>
</bean>
如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置
hibernate.cache.use_query_cache true 才行
<prop key="hibernate.cache.use_query_cache">true</prop>
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
相关文章
- Hibernate 二级缓存配置出现的异常
- 在Spring、Hibernate中使用Ehcache缓存
- [置顶] 在Spring、Hibernate中使用Ehcache缓存
- 在Spring、Hibernate中使用Ehcache缓存
- spring3+hibernate4+ehcache,使用原生sql查询后得到的缓存,从缓存查询数据报错
- 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台
- java中hibernate二级缓存详解
- Hibernate一级缓存和二级缓存详解
- 详解spring boot集成ehcache 2.x 用于hibernate二级缓存
- mybatis教程之查询缓存(一级缓存二级缓存和整合ehcache)