hibernate中的缓存的分类及执行过程

来源:互联网 发布:php小炒花生米 编辑:程序博客网 时间:2024/06/07 05:38

一级缓存:属于事务范围的缓存。缓存的生命周期对应事务的生命周期。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.与其他应用程序共享的数据

作用范围:

事务范围:只能被当前事务访问。

进程范围:进程内的所有事务共享缓存,进程结束,缓存结束。

集群范围:在一个机器或者多个机器进程共享。







1 0
原创粉丝点击