hibernate的二级缓存也称进程级的缓存或SessionFactory级的缓存,可以被所有的session共享,生命周期同SessionFactory生命周期相同,SessionFactory可以管理二级缓存。
hibernate二级缓存介绍:
* 实现为可插拔,通过修改hibernate.cfg.xml文件中的cache.provider_class参数来指定不同的cache生成商并使用。
* 指定要缓存的对象并制定使用的缓存策略方式(两种):
1.在hibernate.cfg.xml文件中加入<class-cache class="com.yx.zzg.Student" usage="read-only" />
2.在映射文件中主键生成策略前家入<cache usage="read-only" />
其中usage包含read-only,read-write,nonstrict-read-write,transactional几个参数
* Session的:save(这个方法不适合native生成方式的主键,如果为native则不会放入二级缓存中),update,saveOrUpdate,list,iterator,get,load以及Query,Criteria都会填充二级缓存,但只有(没有打开查询缓存时),Session的iterator,get,load会从二级缓存中取数据(iterator可能存在N+1次查询)。
* Query,Criteria(查询缓存)由于命中率较低,所以hibernate缺省是关闭;需要在hibernate.cfg.xml文件中设置cache.use_query_cache为true打开查询缓存,并且在方法中需要显示的调用query.setCacheable(true);或criteria.setCacheable(true);
* SessionFactory中提供了evictXXX()方法用来清除缓存中的内容
* 打开统计信息需要在hibernate.cfg.xml中设置generate_statistics为true,用sessionFactory.getStatistics()获取统计信息,该统计信息对于调试非常有用。
Hibernate缓存
最新推荐文章于 2024-08-05 14:58:46 发布