【发布时间】:2012-04-04 21:39:48
【问题描述】:
我们正在使用 JPA/Hibernate 启动一个新项目。团队中的某个人拒绝使用命名查询,说他以前遇到过性能问题。据他介绍,命名查询不仅在启动时被解析,而且它们也会被执行,这会显着减慢启动速度。
是否正确,如果正确,是否有任何配置可以防止休眠执行查询?
【问题讨论】:
标签: hibernate jpa named-query
我们正在使用 JPA/Hibernate 启动一个新项目。团队中的某个人拒绝使用命名查询,说他以前遇到过性能问题。据他介绍,命名查询不仅在启动时被解析,而且它们也会被执行,这会显着减慢启动速度。
是否正确,如果正确,是否有任何配置可以防止休眠执行查询?
【问题讨论】:
标签: hibernate jpa named-query
但是它们运行得更快。那么你更喜欢什么,更慢的启动或更快的查询性能。
您还可以通过验证获得不错的好处,因此您可以及早发现错误..
但这当然是理论。与往常一样,在性能方面,您应该在自己的系统上进行测试和验证!
这是一个很好的阅读主题: http://eubauer.de/kingsware/2011/03/25/organize-your-named-jpql-queries/
【讨论】:
据他说,命名查询不仅在启动时被解析,而且还会被执行,这会显着减慢启动速度。
不,这不是真的。命名查询不会在启动时执行。它们在启动时被解析和编译,但没有针对数据库执行。
是否正确,如果正确,是否有任何配置可以防止休眠 从执行查询?
如果您询问如何防止编译此类查询,AFAIK 无法禁用它。
虽然我同意大量的命名查询会减慢应用程序的启动速度,但通常这不是一个重要因素。
您必须在启动性能和运行时性能之间做出选择。就我个人而言,我通常将我的一些 JPA 查询设为命名查询(运行时性能至关重要的查询)。
【讨论】: