Hibernate二级缓存详解(定义作用及使用实例)

Hibernate二级缓存详解(定义作用及使用实例)-mikechen
Hibernate支持两个级别的缓存,一级缓存和二级缓存,下面重点详解Hibernate二级缓存。

Hibernate缓存

缓存介于应用程序和永久性数据存储源,比如:硬盘上的文件或者数据库之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。

hibernate支持两个级别的缓存,分别是:一级缓存和二级缓存。

 

Hibernate一级缓存

Hibernate默认有一个一级缓存,就是默认的Session缓存,当我们做了一次查询,Hibernate会把这个结果缓存起来,叫做一级缓存。

当我们接着在这个Session会话里面再做一次同样条件的查询,hibernate不会再次查询数据库,而是直接在一级缓存中获取结果并返回。

第一级别的缓存是 Session 级别的缓存,它是属于事务范围的缓存,这一级别的缓存由 hibernate 管理的。

 

Hibernate二级缓存

第二级别的缓存是 SessionFactory 级别的缓存,它是属于进程范围的缓存。

默认情况下hibernate是不会启用的,需要第三方的插件。

hibernate允许使用的缓存插件

  • EHCache 可作为进程范围内的缓存,支持hibernate查询缓存;
  • OpenSysphony OSCache 可作为进程范围内的缓存,支持hibernate查询缓存;
  • SwarmCache 可作为集群范围内的缓存,不支持hibernate的查询缓存;
  • JBossCache 可作为集群范围内的缓存,支持hibernate的查询缓存;

 

Hibernate二级缓存的使用

1.开启二级缓存

在hibernate.cfg.xml中配置启用二级缓存,只需增加一行即可。

如下所示:

<!-- 启用二级缓存 --> 
<property name="cache.use_second_level_cache">true</property>

 

2.配置哪个类使用二级缓存

<!-- 配置哪个类使用二级缓存 -->
<class-cache class="com.mikechen.study.model.User" usage="read-write"/>

哪个类使用二级缓存的配置也可以在.hbm.xml中配置

<cache usage="read-write"/>

如果有关联关系的话,还需要再进行设置集合的二级缓存。

 

3.配置二级缓存

二级缓存的实现,默认是用ehcache,需要增加一个配置文件ehcache.xml。如下所示:

<?xml version="1.0" encoding="utf-8" ?>

<ehcache>

<diskStore path="java.io.tmpdir"/>

<defaultCache

maxElementsInMemory="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

overflowToDisk="true"

/>

</ehcache>

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法