前言
这次主要复习Hibernate的二级缓存的相关知识,配置以及使用。二级缓存主要采用第三方的ehcache,也将介绍ehcache缓存的相关配置属性以及在项目中的搭建,具体的项目查看下一篇的 Maven搭建SpringMVC+Hibernate项目详解 的文章。(之前使用过Hibernate的二级缓存,但是没自己搭建和研究过,现在花了半天时间搭建了一下,写下来供大家参考)
1、Hibernate二级缓存
Hibernate包括两个级别的缓存:
1、一级缓存:默认总是启用的session级别的。
2、二级缓存:可选的SessionFactory级别的。
Session级别的以及缓存总是有效的,当应用保持持久化实体、修改持久化实体时,Session并不会吧这种改变flush到数据库,而是缓存在当前Session的一级缓存中,除非程序显示调用session的flush方法,或者查询关闭session时,才会把这先改变一次性的flush到底层数据库,这样可以减少与数据库的交互,从而提高数据库的访问性能。
SessionFactory级别的二级缓存是全局的,应用的所有的Seeion都共享这个二级缓存,当Session需要抓取数据时,Session就会优先从二级缓存中抓取。(主要包括实体缓存,查询缓存)。
2、适用范围
主要适合以下数据放入二级缓存:
1. 很少被修改,大量查询的
2. 不是很重要的数据,允许出现偶尔并发访问的
3、Hibernate二级缓存的配置
Hibernate的二级缓存主要使用第三方缓存插件,这里主要使用Ehcache二级缓存。
首先、我们需要映入ehcache包以及hibernate-ehcache包,maven的pom.xml映入如下:
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.8.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>4.3.8.Final</version>
</dependency>
<!-- 二级缓存ehcache -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.0</version>
</dependency>
其次、我们需要在Hibernate的配置文件中设置二级缓存的相关信息
<!-- 开启二级缓存 ehcache -->
<prop key="hibernate.c