Hibernate二级缓存详解.docx

Hibernate二级缓存详解.docx

ID:32020296

大小:61.96 KB

页数:37页

时间:2019-01-30

Hibernate二级缓存详解.docx_第1页
Hibernate二级缓存详解.docx_第2页
Hibernate二级缓存详解.docx_第3页
Hibernate二级缓存详解.docx_第4页
Hibernate二级缓存详解.docx_第5页
资源描述:

《Hibernate二级缓存详解.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Hibernate二级缓存详解与Session相对的是,SessionFactory也提供了相应的缓存机制。SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存。      SessionFactory的内置缓存中存放了映射元数据和预定义SQL语句,映射元数据是映射文件中数据的副本,而预定义SQL语句是在Hibernate初始化阶段根据映射元数据推导出来的。SessionFactory的内置缓存是只读的,应用程序不能修改缓存中的映射元数据和预定义SQL语句,因此Sess

2、ionFactory不需要进行内置缓存与映射文件的同步。      SessionFactory的外置缓存是一个可配置的插件。在默认情况下,SessionFactory不会启用这个插件。外置缓存的数据是数据库数据的副本,外置缓存的介质可以是内存或者硬盘。SessionFactory的外置缓存也被称为Hibernate的二级缓存。      Hibernate的二级缓存的实现原理与一级缓存是一样的,也是通过以ID为key的Map来实现对对象的缓存。      由于Hibernate的二级缓存是作用在S

3、essionFactory范围内的,因而它比一级缓存的范围更广,可以被所有的Session对象所共享。14.2.3.1   二级缓存的工作内容      Hibernate的二级缓存同一级缓存一样,也是针对对象ID来进行缓存。所以说,二级缓存的作用范围是针对根据ID获得对象的查询。      二级缓存的工作可以概括为以下几个部分:●  在执行各种条件查询时,如果所获得的结果集为实体对象的集合,那么就会把所有的数据对象根据ID放入到二级缓存中。●  当Hibernate根据ID访问数据对象的时候,首先

4、会从Session一级缓存中查找,如果查不到并且配置了二级缓存,那么会从二级缓存中查找,如果还查不到,就会查询数据库,把结果按照ID放入到缓存中。●  删除、更新、增加数据的时候,同时更新缓存。14.2.3.2   二级缓存的适用范围      Hibernate的二级缓存作为一个可插入的组件在使用的时候也是可以进行配置的,但并不是所有的对象都适合放在二级缓存中。      在通常情况下会将具有以下特征的数据放入到二级缓存中:●  很少被修改的数据。●  不是很重要的数据,允许出现偶尔并发的数据。●

5、  不会被并发访问的数据。●  参考数据。      而对于具有以下特征的数据则不适合放在二级缓存中:●  经常被修改的数据。●  财务数据,绝对不允许出现并发。●  与其他应用共享的数据。      在这里特别要注意的是对放入缓存中的数据不能有第三方的应用对数据进行更改(其中也包括在自己程序中使用其他方式进行数据的修改,例如,JDBC),因为那样Hibernate将不会知道数据已经被修改,也就无法保证缓存中的数据与数据库中数据的一致性。14.2.3.3   二级缓存组件      在默认情况下,H

6、ibernate会使用EHCache作为二级缓存组件。但是,可以通过设置hibernate.cache.provider_class属性,指定其他的缓存策略,该缓存策略必须实现org.hibernate.cache.CacheProvider接口。      通过实现org.hibernate.cache.CacheProvider接口可以提供对不同二级缓存组件的支持。      Hibernate内置支持的二级缓存组件如表14.1所示。表14.1   Hibernate所支持的二级缓存组件组件Pr

7、ovider类类型集群查询缓存Hashtableorg.hibernate.cache.HashtableCacheProvider内存不支持支持EHCacheorg.hibernate.cache.EhCacheProvider内存,硬盘最新支持支持OSCacheorg.hibernate.cache.OSCacheProvider内存,硬盘不支持支持SwarmCacheorg.hibernate.cache.SwarmCacheProvider集群支持不支持JBossTreeCacheorg.h

8、ibernate.cache.TreeCacheProvider集群支持支持      Hibernate已经不再提供对JCS(JavaCachingSystem)组件的支持了。14.2.3.4   二级缓存的配置      在使用Hibernate的二级缓存时,对于每个需要使用二级缓存的对象都需要进行相应的配置工作。也就是说,只有配置了使用二级缓存的对象才会被放置在二级缓存中。二级缓存是通过元素来进行配置的。元素的属性定义说明如下所示: 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。