千家信息网

Hibernate缓存

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、Hibernate缓存概述Hibernate中提供两个级别的缓存,一级缓存和二级缓存。1.一级缓存是Session级别的缓存,它属于事物范围的缓存,一级缓存有hibernate进行管理。2.二级缓
千家信息网最后更新 2026年11月01日Hibernate缓存

一、Hibernate缓存概述

Hibernate中提供两个级别的缓存,一级缓存和二级缓存。

1.一级缓存是Session级别的缓存,它属于事物范围的缓存,一级缓存有hibernate进行管理。

2.二级缓存是sessionFactory级别的缓存,它属于进程范围的缓存,二级缓存又可分为"内置缓存"和"外置缓存",内置缓存:是hibernate在创建sessionFactory时会加载.hbn.xml文件并会在内存中初始化一些默认的sql语句,该内置缓存是只读的;外置缓存(二级缓存),默认sessionFactory不会启动这个缓存插件,外置缓存中的数据是数据库中数据的复制,存储的物理介质可以是内存或者硬盘。

二、Hibernate一级缓存

session的缓存有两大作用:

1.减少访问数据库的频率。

2.保证数据库中的相关记录与缓存中的相关对象保持一致。

Session根据脏对象的最新属性执行相关SQL语句,从而保证了数据库中的相关记录与缓存中的响应对象的同步,默认在如下时间点,session会清理缓存:

1.应用程序调用Transaction的commit()方法时,commit()会先清理缓存,再向数据库提交事务。

2.应用程序执行一些查询操作,缓存中的持久化对象的属性发生变化时。

3.显式调用Session的flush()方法。

Session提供了两个管理缓存的方法:

1.evict(Object obj);从缓存中清除特定持久化对象。

2.clear();清空缓存中,所有持久化对象。

三、Hibernate二级缓存

1. 使用 Hibernate 二级缓存的步骤:

1). 加入二级缓存插件的 jar 包及配置文件:

I. 复制 \hibernate-release-4.2.4.Final\lib\optional\ehcache\*.jar 到当前 Hibrenate 应用的类路径下.
II. 复制 hibernate-release-4.2.4.Final\project\etc\ehcachexml 到当前 WEB 应用的类路径下

2). 配置 hibernate.cfg.xml下载

I. 配置启用 hibernate 的二级缓存
true

II. 配置hibernate二级缓存使用的产品
org.hibernate.cache.ehcache.EhCacheRegionFactory

III. 配置对哪些类使用 hibernate 的二级缓存


实际上也可以在 .hbm.xml 文件中配置对哪些类使用二级缓存, 及二级缓存的策略是什么.下载

2). 集合级别的二级缓存的配置

I. 配置对集合使用二级缓存

也可以在 .hbm.xml 文件中进行配置







II. 注意: 还需要配置集合中的元素对应的持久化类也使用二级缓存! 否则将会多出 n 条 SQL 语句.

3). ehcache 的 配置文件: ehcache.xml

4). 查询缓存: 默认情况下, 设置的缓存对 HQL 及 QBC 查询时无效的, 但可以通过以下方式使其是有效的

I. 在 hibernate 配置文件中声明开启查询缓存

true

II. 调用 Query 或 Criteria 的 setCacheable(true) 方法
@Test
public void testQueryCache(){
Query query = session.createQuery("FROM Employee");
query.setCacheable(true);

List emps = query.list();
System.out.println(emps.size());

emps = query.list();
System.out.println(emps.size());

Criteria criteria = session.createCriteria(Employee.class);
criteria.setCacheable(true);
}
III. 查询缓存依赖于二级缓存(使用查询缓存的前提是配置hibernate二级缓存)

示例:下载





缓存 配置 数据 对象 文件 查询 数据库 方法 级别 I. 应用 语句 两个 内存 属性 应用程序 插件 程序 范围 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技网 互联网公司 科技公司 深圳齐家互联网科技 大白互联网科技 左右互联网络科技 广州市恰铎互联网科技有限公司 科技类公司包括互联网吗 企晟互联网信息科技有限公司 晋城互联网科技 互联网金融科技名词解释 无锡工业互联网科技有限公司 元气玛特互联网科技公司是外包吗 互联网科技资金流入 互联网领先科技宣传片 互联网科技快讯热点 互联网与数字科技关系 盐城市攀科互联网科技有限公司 互联网的黑科技实验室 互联网科技自媒体灵感 互联网科技快速发展优美句子 深圳市人人互联网科技有限公司 广州为想互联网科技有限公司 互联网金融 金融科技 贵州叶脉互联网科技有限公司所属行业 互联网媒体平台算高科技产业 电子科技大学互联网创业大赛 乌苏新华互联网科技做什么的 山东子淼互联网科技有限公司 从那以后互联网科技有限公司 第三届互联网大会安防黑科技
0