2012-03-20 81 views
1

我們正在開始一個使用JPA/Hibernate的新項目。團隊中的某個人拒絕使用已命名的查詢,說他以前遇到過性能問題。據他介紹,這些命名的查詢不僅在啓動時被解析,而且它們也被執行,這將大大降低啓動速度。Hibernate命名查詢和啓動性能

是對的,如果有的話,是否有任何配置來阻止hibernate執行查詢?

回答

1

但他們運行得更快..所以你寧願有什麼,更慢的啓動或更快的查詢性能。

所以你及早發現你的錯誤,您還可以使用驗證一個不錯的效益..

但是,這是當然的理論。一如既往,當涉及到性能時,您應該在您自己的系統上進行測試和驗證!

下面是關於這個問題的一個很好的閱讀: http://eubauer.de/kingsware/2011/03/25/organize-your-named-jpql-queries/

1

據他介紹,該命名查詢不僅在啓動時解析,但他們也都執行這將顯著減緩啓動。

不,這是不正確的。命名查詢不會在啓動時執行。他們正在解析編譯在啓動時,但而不是對數據庫執行。

是對的,如果有的話,是否有任何配置來防止hibernate 執行查詢?

如果您詢問如何防止編譯這些查詢,AFAIK無法禁用它。

儘管我同意大量的命名查詢會減慢應用程序的啓動速度,但通常它不是一個重要因素。

您必須在啓動和運行時間性能之間進行選擇。就我個人而言,我通常會讓我的一些JPA查詢命名查詢(那些運行時性能是必不可少的)。

Regards