首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Hibernate Criteria vs HQL:哪个更快?

Hibernate Criteria vs HQL:哪个更快?
EN

Stack Overflow用户
提问于 2010-12-10 01:28:06
回答 3查看 60.8K关注 0票数 73

我一直在读一些回忆录,但我还是很困惑。为什么?因为您提到的差异与性能无关。它们与易用性有关(Objetc(标准)和SQL(hql))。但我想知道"criteria“是不是因为某种原因比hql慢。

我在另一本书里读到了这篇文章

HQL和criteriaQuery在性能方面存在差异,每次您使用criteriaQuery触发查询时,它都会为表名创建新的别名,该别名不会反映在任何数据库的上次查询缓存中。这会导致编译生成的SQL的开销,从而花费更多时间执行。瓦伦·梅塔写的。

这是非常接近,但是!我在另一个网站(http://gary-rowe.com/agilestack/tag/hibernate/)上看到,这不再是Hibernate 3.3及以上版本的情况(请阅读这个: 9) Hibernate速度很慢,因为Criteria接口生成的SQL不一致)

我已经做了一些测试,试图找出差异,但两者都生成qry,并且它不会更改表的别名。

我很困惑。如果有人知道主要原因,你能帮助我们吗?谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-11-14 09:19:14

我正在制作数百万张唱片。我发现HQL比Criteria快得多。Criteria在性能上有很大的滞后。

如果您正在处理大量数据,则使用HQL。

票数 9
EN

Stack Overflow用户

发布于 2011-01-13 18:23:56

对于动态查询,我更喜欢使用条件查询。例如,根据某些参数动态添加一些排序或省略某些部分(例如限制)要容易得多。

另一方面,我将HQL用于静态和复杂的查询,因为它更容易理解/阅读HQL。另外,我认为HQL的功能更强大一些,例如,对于不同的连接类型。

JPA and Hibernate - Criteria vs. JPQL or HQL

票数 7
EN

Stack Overflow用户

发布于 2016-11-05 16:34:07

你是对的,也是错的。使用org.hibernate.loader.Loader类从数据库或缓存中检索结果列表。如果未启用缓存,则使用在SessionFactoryImp中创建的方言对象构建预准备语句。因此,每次列表调用都会初始化语句。此外,低级查询是自动生成的。基本上,它是一种辅助工具,但在某些情况下,特定的查询在手动编写时会更有效。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4401240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档