gpt4 book ai didi

Hibernate——条件与命名查询

转载 作者:行者123 更新时间:2023-12-02 11:21:11 25 4
gpt4 key购买 nike

我正在尝试比较Hibernate Criteria命名查询以提高性能。我知道这一切都取决于实际查询本身,最后一句话是它们在运行时如何分析。尽管如此,还是试图弄清楚每个内容的内容。

我尝试将问题分为两部分并寻求对这两部分的验证/更正:

第 1 部分——Hibernate Criteria 和命名查询的基本工作原理:

标准适用于参数。在运行时,查询不需要解析——有几个搜索和“呈现形式”参数,例如对结果进行排序,将其返回为可滚动等。还没有阅读/验证这一点,但 Criteria 的工作原理是字段索引(基于其上设置的参数)让这一切变得更快。

所以,Criteria 与普通 HQL 相比的优势是其执行期间的速度。

命名查询与 HQL 相比具有相同的优势——查询在启动时被解析一次。然后执行从应用程序中任何需要的地方。

第 2 部分——两者比较:

所以在这张照片中,

标准和命名查询如何相互比较?

条件非常适合跨多个表的复杂查询和多个参数——有办法优化,从而使查询更快(?)

命名查询具有“define-once-use-everywhere”的优点,并且对于“轻度”查询来说相当不错——通常在单个表上使用少量参数进行不太复杂的搜索。在频繁查询时效果更好。

注意:见过很有用的Hibernate Criteria vs HQL: which is faster?以及其他一些讨论。

TIA。

最佳答案

您不会根据性能来选择其中之一。最终无论如何都变成了SQL查询,重要的是SQL查询的性能。

执行 SQL 查询比解析 HQL 查询并将其转换为 SQL 慢几个数量级。因此,即使您不使用命名查询,性能也不会明显变差。

您可以根据功能和可读性来选择 HQL 的标准。

如果您想要可读的内容,请使用 HQL 查询。

如果您想基于各种可选的搜索条件动态地编写查询,那么 Criteria API 允许这样做,并且比动态编写 HQL 查询更方便。

关于Hibernate——条件与命名查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23025030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com