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.配置二级缓存
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》