二级缓存也叫sessionFactory缓存,二级缓存需要配置,二级缓存交给了第三方进行处理,常见的二级缓存支持有EHCache,OSCache,Hashtable,由于一级缓存有限(内存有限,session生命周期有限),所以二级缓存是一级缓存的弥补,二级缓存的生命跟SessionFactory有关联,二级缓存在sessionFactory生命周期中存在,二级缓存可以在内存和磁盘中。
hibernate查询数据,先从一级缓存中找,如果一级缓存中存在,则返回数据,一级缓存中不存在,就从数据库中找,在数据库中找到后,将数据放入一级缓存,如果配置了二级缓存,则是先从一级缓存中找,如果一级缓存不存在,再从二级缓存中找,如果二级缓存存在,则返回数据,如果二级缓存中不存在,则从数据库中找,在数据库中找到后,将数据放入一级缓存和二级缓存。
二级缓存有一个统计数据命中率的方法,数据命中率越高越好。
二级缓存的OSCache.property文件配置capacity大小和缓存在内存还是磁盘。
hibernate_cache_second_level true
cache_privider_class org.hibernate.cache.OSCachePrivider
hibernate_generate_statictis true
mapping Student.hbm.xml
class-cache class Student usage read-only,read-write,nonstrict-read-write,transactional
OSCache.jar,log4j.jar,OSCache.propertiry