Hibernate缓存
admin
2023-06-07 10:21:54
0

一、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二级缓存)

示例:下载





相关内容

热门资讯

武契奇抵京:这无疑是我政治生涯... 据央视新闻消息,塞尔维亚总统武契奇5月24日至28日对中国进行国事访问。24日中午,武契奇总统乘机抵...
泽连斯基:俄方发射了90枚导弹... 当地时间24日,乌克兰总统泽连斯基通过社交媒体发文表示,自当日凌晨起,乌克兰救援部门及相关应急部门已...
“都到这个关键时刻了,难道还要... 中国应急管理报消息,5月22日19时29分,沁源县山西通洲集团留神峪煤矿发生瓦斯爆炸事故。事故发生后...
分布式电推进协同控制大模型决策... 分布式电推进协同控制大模型决策系统已融合人工智能AI软件平台 北京华盛恒辉分布式电推进协同控制大模型...
PCB制备耗材:PCB湿电子化... 来源:市场资讯 (来源:伏白的交易笔记) 一. PCB电子化学品 PCB制备共涉及数百道工序,核心步...
原创 我... 今天上午时分,一场有关神舟二十三号载人飞行任务的新闻发布会,于酒泉卫星发射中心举行。发言人对外透露,...
沈伯洋质疑蒋万安AI愿景没电,... 海峡导报综合报道 台北选战议题持续交锋,台北市长蒋万安抛出,2035年以前要让台北跻身全球前十大AI...
重庆永川特大暴雨:农家乐经营者... 5月24日上午,据永川发布消息,5月23日23时至24日8时20分许,重庆永川区出现特大暴雨,辖区茶...
巴基斯坦客运列车遭袭现场 5月24日,据巴基斯坦警方消息,该国西南部俾路支省一列客运列车当天遭爆炸袭击,已导致至少24人死亡、...
AI热潮下的公关困境:英国企业... IT之家 5 月 24 日消息,据《卫报》今天报道,各大公关企业表示,英国各大公司如今正在想方设法把...