12920171107
12920171107
1、hibernate缓存分类:一级、二级缓存都是对整个实体进行缓存,它不会缓存普通属性。
1)、一级缓存:get/load方法,save/load操作
(1)、hibernate默认缓存(不需要用户配置)
(2)、生命周期是session作用域为范围,session关闭之后缓存清空。
2)、二级缓存:设置二级缓存的步骤见下边
(1)、默认不启动,必须进行相应的配置
(2)、它生命周期是依赖于SessionFactory的作用域而存在
3)、查询缓存:主要是针对普通属性结果集的缓存
(1)、查询缓存基于二级缓存,使用查询缓存前,必须首先配置好二级缓存
(2)、在hibernate.cfg.xml中添加如下配置:
true
(3)、在程序中还必须手动启用查询缓存:query.setCacheable(true);
2、设置二级缓存的步骤(二级缓存插件 EHCache)
1)、在lib\optional\ehcache\目录下的jar文件,导入工程
2)、将\project\etc\目录的ehcache.xml,复制到src目录下
3)、在hibernate.cfg.xml文件,配置如下内容:
true
org.hibernate.cache.ehcache.EhCacheRegionFactory
4)、指明二级缓存使用在那些pojo的类:有两种设置方式
(1)、在类的映射文件的id前边加上:
(2)、hibernate.cfg.xml里的
下边加上:
3、二级缓存并发访问策略:usage属性设置
1)、read-only:只读型并发访问策略
2)、read-write:读写型并发访问策略
3)、nonstrict-read-write:读写型并发访问策略
3)、transactional:EHCache插件不支持transactional(事务型并发访问策略)