【发布时间】:2014-05-26 08:14:21
【问题描述】:
我正在尝试将 Hibernate Criteria 与命名查询的性能进行比较。我知道这一切都取决于实际查询本身,最后一句话是关于它们在运行时的配置方式。仍然,试图理清每个内容。
我尝试将 Q 分为两部分并在两者上寻找验证/更正:
PART-1 -- Hibernate Criteria 和命名查询的基本工作原理:
标准适用于参数。 在运行时,查询不需要解析——有几个搜索和“呈现形式”参数,如 排序结果,将它们作为可滚动返回等。 尚未阅读/验证此内容,但标准适用于 字段索引(基于字段上设置的参数) 让这一切更快。
因此,与普通 HQL 相比,Criteria 的优势 是它在执行过程中的速度。
命名查询与 HQL 相比具有相同的优势—— 查询在启动时解析一次。然后执行 从应用程序中的任何必要位置。
PART-2——比较两者:
所以在这张照片中,
条件和命名查询如何相互比较?
条件适用于跨多个表的复杂查询 和多个参数——有优化的方法,从而使查询快速(?)
命名查询具有“define-once-use-everywhere”的优点,并且 对于“轻量级”查询来说还不错—— 通常在单个表上使用少量参数进行不太复杂的搜索。在频繁查询时甚至更好。
注意:在其他一些讨论中看到了非常有用的Hibernate Criteria vs HQL: which is faster?。
TIA。
【问题讨论】:
标签: hibernate orm criteria named-query