2015-12-24 77 views
1

在應用程序啓動時編譯定義爲存儲庫接口上方法的Spring數據查詢。如果spring數據與hibernate或其他JPA供應商結合使用,這是否意味着查詢至少與使用存儲過程一樣快?我在很多地方讀到,存儲過程是查詢數據庫的最快方法,但是這種方法是否解決了這個問題以避免使用存儲過程?彈簧數據和休眠比存儲過程更快

+1

呃不,事情並沒有因爲拋棄工具而神奇地變得更快。這完全取決於你如何知道所說的工具以及你投入多少錢來正確使用它們。像Hibernate這樣的ORM尤其需要專業的照顧,以免你的性能下降。我已經優化了JPA查詢,從4000個SQL查詢減少到5個,運行時間從幾秒到幾毫秒。 – Gimby

回答

4

存儲過程不只是查詢。他們是......程序,它們在數據庫本身中執行,儘可能接近數據。

JPQL命名查詢在啓動時驗證並轉換爲SQL查詢。 AFAIK,Spring-data-jpa查詢在啓動時驗證(但我不確定它們是否在啓動時轉換爲SQL)。無論如何,在運行時,它們仍然是作爲SQL查詢執行的,就像您使用JDBC準備語句執行的那樣。