1.Hibernate的缓存机制包括两个级别
(1)session 级别的一级缓存。
Session级别的以及缓存不需要开发者关心,默认都是开启的状态。当应用保存持久化实体、修改持久化实体的时候,Session并不会把这种改变flush到数据库中,而是缓存在当前的session的一级缓存中,除非程序显式的调用session的flush方法或者关闭Session时才会包更改的数据提交到数据库中。
(2)sessionfactory级别的二级缓存。
SessionFactory级别的二级缓存事故全局性的,应用的所有Session都是共享一个二级缓存。但是SessionFactory级别的缓存默认是关闭的,必须要求程序员显式的开启。如果开启了二级缓存,当Session需要抓取数据时,Session将会优先从二级缓存中抓取。
2. 开启二级缓存(以EHCahe 为例)
(1)在hibernate.cfg.xml 文件中(如果是ssh项目的话在applicationContext.xml 中的 sessionfactory 的Bean配置中添加)开启二级缓存 设置开启二级缓存 和设置二级缓存的实现类
<prop key="hibernate.cache.use_second_level_cache">True</prop> <!-- 设置开启二级缓存 -->
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EHCacheProvider</prop> <!--设置二级缓存的实现类-->
(2)拷入响应的jar包
复制Hibernate 项目路径下的ehcache 项目下的jar包
(3)配置相应的配置文件 .xml
也是在cache项目下的配置文件
(4) 设置对哪些实体类、实体类的集合启用二级缓存
在实体类的映射文件中 class 标签下 添加<cache usage="read-only"> 标签
读 李刚老师的《轻量级JavaEE企业应用实战》 总结