常见的缓存组件
在默认情况下,hibernate会使用EHCache作为二级缓存组件。但是,可以通过设置hibernate.cache.provider_class属性,指定其他的缓存策略,该缓存策略必须实现org.hibernate.cache.CacheProvider接口。
通过实现org.hibernate.cache.CacheProvider接口可以提供对不同二级缓存组件的支持,此接口充当缓存插件与Hibernate之间的适配器。
EHcache环境的配置
在Hibernate基本环境基础上继续配置,Hibernate基本环境的搭建请参考之前的博文MyEclipse中搭建hibernate环境
一、添加jar
EHcache属于第三方插件,使用时需要添加相应的jar包,而这个jar包就在我们下载的Hibernate开发工具包之中,我下载的是hibernate-release-5.0.1.Final,如何下载开发包和源代码请参考如何从官网下载hibernate源码与jar包教程,对应的EHcache所需jar在hibernate-release-5.0.1.Final\lib\optional\ehcache路径下
把它们添加至工程的lib目录下,并Build Path
二、在主配置文件中开启二级缓存
Hibernate默认情况下二级缓存是关闭的,开启需要在主配置文件中添加
<property name="hibernate.cache.use_second_level_cache">true</property>
三、注册二级缓存区域工厂
在主配置文件中配置
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
这个配置的值不是固定的,取决于你的Hibernate版本
它的值就是这个类的全名(没有class)
四、添加ehcache.xml文件
这个文件在刚刚添加的ehcache-core-2.4.3.jar中,获取方法是:解压这个jar文件
拷贝ehcache-failsafe.xml文件并把文件名修改为ehcache.xml至src文件夹下
五、配置需要缓存的class
方法一:在映射文件中(xxx.hbm.xml),class标签下添加<cache usage="read-only"/>
方法二:在主配置文件(hibernate.cfg.xml)中Mapping标签下面添加<class-cache usage="read-only" class="com.hibernate.beans.Student"/>
六、配置需要缓存的set集合
方法一:在映射文件中(xxx.hbm.xml),set标签里key标签前面添加<cache usage="read-only"/>
方法二:在主配置文件(hibernate.cfg.xml)中Mapping标签下面添加<collection-cache usage="read-only" collection="com.hibernate.beans.Student.courses"/>