我们正在使用JPA / Hibernate开始新的项目。团队中的某个人拒绝使用命名查询,说他之前遇到了性能问题。根据他的说法,命名查询不仅在启动时被解析,而且它们也被执行,这将显着减慢启动速度。
是否正确,如果有,是否有任何配置可以阻止hibernate执行查询?
答案 0 :(得分:1)
但是它们运行得更快..那么你宁愿拥有什么,更慢的启动或更快的查询性能。
通过验证您也可以获得很好的好处,因此您可以尽早发现错误。
但这当然是理论。与性能一样,您应该在自己的系统上进行测试和验证!
这是一个很好的阅读主题: http://eubauer.de/kingsware/2011/03/25/organize-your-named-jpql-queries/
答案 1 :(得分:1)
根据他的说法,命名查询不仅在启动时被解析,而且它们也被执行,这将大大减慢启动速度。
不,这不是真的。命名查询在启动时不会执行。它们在启动时被解析和编译,但不对数据库执行。
是否正确,如果是,是否有任何配置可以防止休眠 从执行查询?
如果您询问如何防止编译此类查询,AFAIK无法禁用它。
虽然我同意大量的命名查询会降低应用程序启动速度,但通常它不是一个重要因素。
您必须在启动和运行时性能之间进行选择。就个人而言,我通常会将一些我的JPA查询命名为命名查询(那些,运行时性能必不可少)。