SSH框架学习之旅(五):hibernate缓存机制

1.概念

缓存是在应用程序和永久性数据之间的临时存放数据的内存区域。hibernate的缓存机制有一级缓存,二级缓存和查询缓存。

2.一级缓存

session级别的缓存,session关闭后自动清除缓存。第一次调用session接口的方法时会存入缓存,在session关闭之前再次查询会从缓存中取数据。

session接口提供了两个管理缓存的方法:

  • evit():将某个对象清除
  • clear():将所有对象清除

3.二级缓存

如果一级缓存中没有数据会从二级缓存中找数据。二级缓存需要配置并开启。二级缓存只缓存对象,不会缓存属性。

二级缓存是sessionFactory级别的,范围为进程或集群。同一级缓存一样根据id缓存。

4.查询缓存

查询缓存是对查询语句的缓存。查询缓存基于二级缓存,使用前需要配置好二级缓存,使用时还要手动开启。

开启查询缓存:

<property name="hibernate.cache.use_query_cache">true</property>

手动开启:

query.setCacheable(true);

查询缓存主要针对属性集的缓存,对于对象的缓存只缓存对象的id。

5.其他性能优化方法

  • 减少生成主键的代价,使用优化的主键生成器
  • 使用jdbc批处理inserts和update
  • 定期清理hibernate会话
  • 减少脏数据检查的代价
  • 搜索坏查询计划
  • 检查错误的提交间隔

上述方法参考链接http://www.csdn.net/article/2015-10-27/2826041