spring hibernate struts 整合开发(5) - Hibernate二级缓存

一.springhibernatestruts整合开发(1)-搭建环境

二.springhibernatestruts整合开发(2)-Spring集成的Hibernate编码和测试

三.springhibernatestruts整合开发(3)-Struts集成Spring

四.springhibernatestruts整合开发(4)-Struts与Spring集成2

五.springhibernatestruts整合开发(5)-Hibernate二级缓存

六.springhibernatestruts整合开发(6)-额外功能

1.启用Hibernate二级缓存

在beans.xml的sessionFactory节点中,加入:

<bean id="sessionFactory" ...>
  ...
  hibernate.cache.use_second_level_cache=true
  hibernate.cache.use_query_cache=false
  hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
</bean>

2.EhCache配置文件

在类路径下新建Ehcache配置文件ehcache.xml

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache maxElementsInMemory="1000" eternal="false" overflowToDisk="true"
            timeToIdleSeconds="120"
            timeToLiveSeconds="180"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="60"/>
	<cache name="com.john.bean.Person" maxElementsInMemory="100" eternal="false"
		overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" diskPersistent="false"/>
</ehcache>

3.映射文件缓存支持

在Person.hbm.xml中加入:

<class name="Person" ...>
  <cache usage="read-write" region="com.john.bean.Person"/>
</class>

4.测试缓存

修改测试类personServiceTest的testGetPerson()方法:

Person person = personService.getPerson(2);
	System.out.println(person.getName());
	Thread.sleep(10000);
	Person person = personService.getPerson(2);
	System.out.println(person.getName());

在线程睡眠的时候,关掉数据库,测试是否还能拿到数据。

Note:

a.如果ehcache版本在1.41以上,必须添加backport-util-concurrent.jar包,否则会报NoClassDefFoundError异常

b.测试缓存时,PersonServiceBean的getPerson方法必须是不支持事务的,否则还是会连接数据库

整理自:传智播客spring教程

相关推荐