二级缓存
1)二级缓存类似于一级缓存,可以缓存对象。但它是SessionFactory级别的缓存。有SessionFactory负责管理。因此二级缓存的数据是session间共享的,不同的session对象都可以共享二级缓存中的数据。
2)二级缓存使用的场景:
----对象数据频繁共享
----数据变化频率低
使用二级缓存的步骤:
1)导入ehcache.jar
2)在src下添加缓存的配置文件echcache.xml
3)在hibernate.cfg.xml中开启二级缓存。指定采用二级缓存驱动类
4)在要缓存的对象对应的映射关系文件中开启当前对象的二级缓存支持,并指定缓存策略。
二级缓存策略
1)只读型(real-only)
缓存不会更新,适用于不会发生改变的数据,效率最高。事务隔离级别最低。
2)读写型(read-write)
缓存会在数据变化时更新,适用于变化的数据
3)不严格读写型(nonstrict-read-write)
缓存会不定期更新,适用于频率最低的数据
4)事务性(transactional)
缓存会在数据变化时更新,并支持事务,效率最低,事务隔离级别最高
查询缓存
1)查询缓存依赖于二级缓存,可以理解为特殊的二级缓存,也是SessionFactory级别的,也是由SessionFactory负责维护
2)查询缓存可以缓存任何查询到的结果。
3)查询缓存是以hql为key,缓存该hql查询到的整个结果。即如果执行2次同样的hql,那么第二次执行时,此次查询可以从查询缓存中取到第一次查询缓存的内容。
4)查询缓存适应的场景:频繁使用同样的hql做查询
使用查询缓存的步骤:
1)开启二级缓存
2)在hibernate.cfg.xml中,开启查询缓存
3)在查询代码执行前,指定开启查询缓存。