Hibernate之查询缓存(The Query Cache)

查询的结果集也可以被缓存。只有当经常使用同样的参数进行查询时,这才会有些用处。

 

   Query Cache中保存了之间查询操作执行过的Select SQL,以及由此查存产生的查询结果集(包括查询对象的类型和id);之后,如果再次发出查询请求时,Hibernate会根据查询的SQL从Query Cahce中检索,如果此SQL曾经执行过,则取出对应这个SQL所检索出来的结果集,再根据这个结果集中的对象类型和id,从缓存中取出对应的实体对象返回;

 

   Query Cache中缓存的SQL及结果集并非一直存在,当Hibernate发现此SQL对应的库发生变动(Update/Delete/Insert),会自动将Query Cahce中对应表的SQL缓存废除。因此,Query Cahce只在特定的情况下使用;

  • 完全的Select SQL重复执行
  • 在两次查询之间,此Select SQL对应的表没有发生变动

但是,以上的两种情况限制比较严格,所以hibernate默认的是将其关闭,需要使用时候可以通过配置属性将其打开:

hibernate.cache.use_query_cache true

 之后必须在Query的查询执行之前,将Query.Cacheable设为true:

Query query = session.createQuery(hql);
query.setCacheable(true);
 

 

 

数据标注的下一代SOP,可能不是Word,而是一段Prompt 再给几个反例:“这个只是正常纹理,不算。真正用于数据生产的Prompt,可能至少包含:任务定义、正例、反例、边界案例、优先级、输出格式、验收逻辑。一个项目100个人,如果100个人对这句话有100种理解,最后返工的就不是一个框,而可能是几十万帧数据。一个项目启动以后,项目经理先研究SOP,培训组长,组长再培训标注员,最后几百个人按照同一套规则干活。实际上一个成熟的项目经理,最重要的能力之一,就是:把客户的业务语言翻译成生产规则。真正让项目难交付的,从来不是80%的普通数据,而是那20%的长尾数据。 阅读详情

相关推荐

Ubuntu关闭更新提醒的三层控制方法:从GUI到APT配置

Linux系统更新机制本质上是包管理器(APT)驱动的自动化运维流程,其核心原理在于分离‘元数据刷新’、‘安全补丁安装’和‘用户通知’三个职能。这种分层设计既保障了基础安全性,又为系统管理员提供了策略定制空间。技术价值体现在提升生产环境稳定性、规避未经验证的内核/驱动升级风险,并支持ROS、Blender渲染、工业控制等对时序敏感的应用场景。本文聚焦Ubuntu系统入门教程中高频需求——科学关闭软件更新提醒,覆盖Ubuntu 20.04及LTS版本的GUI设置、systemd服务禁用与APT配置修改三大实操

weixin_29698641的博客 394

Spring Hibernate sqlquery 查询结果 缓存问题

<br />问题描述:当我们使用Spring+Hibernate框架的Web工程时,在Action中的一个方法中使用SQLQuery查询,第二次查询时,得到的结果集不是最近的数据库数据。就是第一次查询后,更新数据后,第二次查询的数据还是第一次的数据,不是我们想要的最新的数据库数据。<br /> <br />产生原因: 是因为Hibernate的缓存机制引起的,尤其是SQLQuery查询的缓存机制。<br /> <br />解决方法:<br />   一般常用的在取得结果集前添加flush来刷新缓存<br /

zengjiuzhou的专栏 2658

无监督学习初探:K-Means聚类与主成分分析(PCA)

K-Means适用于快速分组,但对数据分布敏感,可结合轮廓系数评估质量。PCA通过特征值分解实现线性降维,需注意非线性场景的替代方案(如UMAP)。进阶方向:聚类:谱聚类、高斯混合模型(GMM)处理复杂形状。降维:t-SNE、自编码器处理非线性结构。

weixin_69882801的博客 1454

hibernate的Query查询的缓存的问题

本文章是比较肤浅的hibernate缓存理解,缓存使用的不好会造成1+N查询的问题,会很浪费数据库资源。缓存不提倡什么方法都使用,我觉得只有真正需要的地方才少量使用比较适合。   最近在检查hibernate的HQL语句,发现我使用的hibernate的缓存查询方法出现了奇怪的问题。 我的缓存查询方法核心代码如下:     session.setCacheMode(CacheMode....

panshunchang 692

AI辅助专利撰写实战:用Codex 30分钟生成发明专利初稿

这次我们来看一个用 Codex 从零开始撰写发明专利的实战项目。对于技术研发人员、产品经理或初创团队来说,专利申请是保护创新成果、构建技术壁垒的关键一步。然而,撰写一份高质量的专利申请书,尤其是权利要求书和说明书,往往需要专业的法律和技术语言,耗时耗力。这个项目演示了如何利用 AI 工具 Codex,在短时间内生成一份结构完整、逻辑清晰、具备授权潜力的专利申请文件初稿。 整个过程的核心不是让 AI 完全替代专利代理人,而是将其作为强大的“技术翻译”和“内容生成”助手。它能将你的技术构思、流程图、核心算法或产

weixin_32181267的博客 414

使用mmdetection快速复现计算机视觉顶会论文

使用mmdetection中支持的算法运行自定义数据集

m0_56896669的博客 2422

解决Hibernate SQL Query Cache的一个可靠性问题(附源码)

上篇 帖子 [url=http://www.iteye.com/topic/249508]Hibernate查询缓存的一个可靠性问题 [/url]说发现Hibernate 的 Query Cache 在使用 SQL Query 时的一个可靠性 Bug, 即在关联表数据修改后,无法查询出最新数据的问题。 经过源码分析,找到问题所在,并通过修改 Hibernate 源代码,成功解决了此问题。 ...

Raymond的Java世界 356

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1441

hibernate的SQLQuery

SQLQuery:使用原生的SQL语句查询 并不是所有sql都能转成hql

weixin_41298572的博客 382

YOLOv7独家原创改进:多种新颖的改进方式 | 保持原始信息-深度可分离卷积(MDSConv) | 全局感受野的空间金字塔 (Improve-SPPF)算法 | CA注意力改进版

多种新颖的改进方式 | 保持原始信息-深度可分离卷积(MDSConv) | 全局感受野的空间金字塔 (Improve-SPPF)算法 | CA注意力改进版

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1667

芒果YOLO11改进106:检测头篇DynamicHead动态检测头:基于DynamicHead,二次原创提出SATNeXt模块,提出全新的动态DynamicSatDetect

检测头篇DynamicHead动态检测头:基于DynamicHead,二次原创提出SATNeXt模块,提出全新的动态DynamicSatDetect

包括YOLOv5、YOLOv7、YOLOv8等模型改进 773

Hibernate缓存体系之查询缓存(query cache),以及list和iterate方法的区别

什么是Hibernate的查询缓存呢?想一下这样的情况:如果A用户向hibernate发出了一个select * from student where name='aty',过了一会儿B用户也发出了同样的查询语句,而在这期间student表数据没有任何的改动,也就是说A用户和B用户需要获取的数据都是相同。如果对A的查询结果进行了缓存,B用户就不用直接查数据库了,直接从缓存中获取数据即可。

aty 4526

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1397

Hibernate中的Query cache(查询缓存)

对于经常用到的查询语句,如果其中的查询参数是固定的,则可以将这样的查询结果也存储到Hibernate的二级缓存中。 应用中设置了查询缓存后,查询的结果集将被存储到缓存中,但并非缓存结果集中具体的entity对象,而是只缓存entity对象的标识符。另外,查询缓存往往代价很大,如果缓存的查询不当,性能有很大影响。 1. 开启查询缓存的步骤: 1).配置文件中,设置配置参数hibernate

成长的足迹 8094

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Hibernate缓存☞查询缓存

Hibernate缓存☞一级缓存 Hibernate缓存☞二级缓存 Hibernate缓存☞查询缓存 Hibernate缓存☞总结 网上说 query.setCacheable(true) 或criteria.setCacheable(true) 这两种方式的缓存命中率低,个人认为谈论这个“无卵用”; 我在测试的时候发现,上面的操作会受配置的限制,必须在配

Sucre 2933

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hibernate开启查询缓存

由于查询缓存,依赖于二级缓存,所以先必须开启二级缓存!! 步骤如下: 首先,通过配置文件开启查询缓存      情况一,项目有hibernate.cfg.xml文件                     通过修改hibernate.cfg.xml文件,开启查询缓存功能 true org.hibernate.cache.EhCacheProvider tru

yh_zeng2的博客 1457

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

spring jpa/hibernate 查询缓存导致内存溢出

如果大量使用in查询,由于参数数量不同,hibernate会把其当成不同的sql进行缓存,从而缓存大量的sql导致heap内存溢出。in_clause_parameter_padding参数让in查询条件的参数数量自动填充到2的幂以减少不同sql的数量。根据内存快照可见大量org.hibernate.engine.query.spi.QueryPlanCache对象。例如,1或2个参数则自动构建为 ‘in (?)’ 3,4个参数构建为 ‘in (?对于填充的绑定参数,将使用提供的最后一个参数值。

路过君的博客 2910

Hibernate中的三种数据持久状态和缓存机制

Java三大框架之——Hibernate中的三种数据持久状态和缓存机制Hibernate中的三种状态    瞬时状态:刚创建的对象还没有被Session持久化、缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID。     持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个对象对应的数据为持久状态这个时候有OID...

ywl470812087的博客 13万+

hibernate查询缓存_深入研究Hibernate的查询缓存

hibernate查询缓存 我已经很长时间没有使用过Hibernate了,甚至更久没有写过博客了 。 最近,我在建立常绿缓存的工作范围内撰写博客文章。 在编写演示代码时,我遇到了一些与Hibernate的查询缓存有关的问题:它没有按我预期的那样工作。 终于,一段时间后,我设法解决了这个问题。 这篇文章旨在更深入地研究Hibernate的Query Cache,以帮助遇到同样问题的其他开发人员...

dlz00001的博客 628

hibernate.cache.use_query_cache 认识误区

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33800463的博客 1549

plsql缓存文件在哪_Hibernate 缓存

缓存缓存是关于应用程序性能的优化,降低了应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存对 Hibernate 来说也是重要的,它使用了如下解释的多级缓存方案:一级缓存第一级缓存是 Session 缓存并且是一种强制性的缓存,所有的要求都必须通过它。Session 对象在它自己的权利之下,在将它提交给数据库之前保存一个对象。如果你对一个对象发出多个更新,Hibernate 会尝试尽...

weixin_39599454的博客 886

Hibernate二级缓存和查询缓存

二级缓存: 1. jar包两个 commons-logging.jar ehcache-1.2.3.jar 2. 总配置文件<property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.provider_class">org.hibernate

北京Java青年 682

Hibernate ehcache and query cache配置

环境:spring1.2.5+hibernate3.0.51、 applicationContext.xml                     org.hibernate.cache.EhCacheProvider                                                                  

hakunamatata2008的专栏 1127

Hibernate查询缓存如何工作

介绍 既然我已经介绍了实体和集合缓存,现在该研究查询缓存的工作原理了。 查询缓存与实体严格相关,它在搜索条件和满足该特定查询过滤器的实体之间绘制关联。 像其他Hibernate功能一样,查询缓存也不像人们想象的那么琐碎。 实体模型 对于我们的测试用例,我们将使用以下域模型: Post实体与Author 具有多对一关联,并且两个实体都存储在第二级缓存中。 启用查询缓存 默...

最佳 Java 编程 260

使用spring和hibernate配置ehcache和query cache

msn:yun15291li@hotmail.comHibernate ehcache and query cache配置环境:spring1.2.5+hibernate3.0.51、 applicationContext.xml                     org.hibernate.cache.EhCacheProvider             

清澈反省 1万+

Hibernate的缓存策略 二

继上篇博客中hibernate缓存,我们继续说 查询缓存。三、查询缓存查询缓存,顾明思议它是查询的时候产生的缓冲,那么就要问了,刚刚在一级缓存,二级缓存中的load,get不一样是查询吗?那是什么样的查询呢?查询缓存是针对普通属性结果集的缓存,对实体对象的结果集只缓存id,这里的ID不是对象的真正ID,它与查询的条件 相关,即where后的条件相关,不同的查询条件,其缓存的id也不一样 。如wher

王勇霞 信息技术提高班九期 1148
上一篇: 愚蠢且能干---转载外刊IT评论
下一篇: Hibernate查询之list/iterator
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值