一级缓存:属于事务范围的缓存。缓存的生命周期对应事务的生命周期。session缓存被称为hibernate的一级缓存。
作用:减少访问数据库的频率。
详细介绍在这篇文章中有详细的介绍:点击打开链接
二级缓存:属于进程范围内的缓存,缓存的生命周期,对应hibernate应用程序的生命周期。sessionFactory缓存分为内置缓存和外置缓存,内置自带,外置是一个可配置的缓存插件。
执行过程:
1.hibernate在根据OID查询时,会先查询session缓存中是否存在记录,如果不存在,并且程序中配置了二
级缓存,就会去二级缓存中查找数据,如果二级缓存也查不到就会发送sql语句去数据库中查,查到数据后,
将该条记录放入二级缓存中。
步骤一:挑选合适的二级缓存插件继承到应用程序中。(以EHcache插件为例)
点击下载相关文件:点击打开链接
步骤二:将commons-logging-1.1.1放入WebRoot\WEB-INF\lib。
步骤三:开启二级缓存。Hibernate.cfg.xml开启
<!--开启二级缓存-->
<propertyname="hibernate.cache.use_second_level_cache">true</property>
步骤四:指定二级缓存产品提供商
<!--指定二级缓存使用的插件-->
<propertyname="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
在该实体类的xx.hbm.xml文件中添加在class内设置(此处以)
<cache usage="read-write" region="com.bean.Emp"/>
三级缓存:查询缓存(相关配置在上图有显示)
步骤一:先配置二级缓存。
步骤二:在hibernate中开启查询缓存
步骤三:使用query对象在程序中手动启用查询缓存
二级缓存的应用场景:
什么时候使用二级缓存?
1.很少被修改的数据。
2.不是很重要,但经常被访问。
3.数量有限的数据
什么时候不需要使用二级缓存
1.经常被修改的数据
2.财务等敏感数据
3.与其他应用程序共享的数据
作用范围:
事务范围:只能被当前事务访问。
进程范围:进程内的所有事务共享缓存,进程结束,缓存结束。
集群范围:在一个机器或者多个机器进程共享。