实现OSCache二级缓存的配置方案

今天在使用hibernate的时候要配置二级缓存,给大家分享一下二级缓存的配置方法

*********实现OSCache二级缓存的配置方案***********

1.首先我们需要在hibernate.cfg.xml中配置几个属性:

<!--   是否开启二级缓存,缺省为开启  -->
< property  name ="cache.use_second_level_cache" > true </ property >
<!--   选择第三方缓存框架支持  -->
< property  name ="cache.provider_class" > org.hibernate.cache.OSCacheProvider </ property >

为了能够查看二级缓存的使用效果,还可以配置:

< property  name ="generate_statistics" > true </ property >


2.然后是哪些类需要配置二级缓存:(举例User实体类)

< class-cache  class ="com.sy.vo.User"   usage ="read-write"   />


其中usage是策略,属性值:

read-only:只读,效率最高。
read-write:读写,效率较低。但是能保证并发正确性。
nonstrict-read-write:非严格的读写,效率较高,不用加锁,不能保证并发正确性。例如帖子浏览量。
transactional:事务性缓存,可回滚缓存数据,一般缓存框架不带有此功能,实现很复杂。

这样hibernate.cfg.xml就配置完了。

3.配置映射文件User.hbm.xml,加入这句代码:

< cache  usage ="read-write" />

4.加入oscache.properties配置文件到classPath下,这个文件在hibernate源码包中有。里面
有很多属性可以设置,如果只是简单实现,不需要修改。不修改的情况下,只有一个配置,是
配置二级缓存的大小,这个视本机内存而定。默认1000。
其中还有一个分布式的配置,可以设置主机IP等等。由于资源有限,我没有做实验。在此不做过多介绍。

OK,配置完成!

----------------------------------------------------------------------------------------------------------

写一个测试类,测试吧。
补充一个测试方法:

Statistics st = HibernateUtil.getSessionFactory().getStatistics();

通过输出st的信息,可以查看缓存的使用情况。

再补充一个清除二级缓存的方法:

HibernateUtil.getSessionFactory().evict(User. class ); // 清除一个实体类的所有缓存
HibernateUtil.getSessionFactory().evict(User. class ,id); // 清除单条缓存

 

你可能感兴趣的:(Hibernate,hibernate 入门)