2009-01-27 43 views

回答

5

一些具體的Hibernate的性能優化技巧:

  • 避免加入引起平行重複一對多ASSOCATION取-聯接(從而避免重複的對象實例化)
  • 使用延遲加載與提取=「再選擇」 (防止N + 1選擇問題)
  • 在巨大的只讀結果集,不提取到映射的對象,而是變成扁平的DTO(與預測和AliasToBean-使用ResultTransformer)
  • 應用HQL批量更新,批量刪除和插入請選擇
  • 使用FlushMode.Never酌情

http://arnosoftwaredev.blogspot.com/2011/01/hibernate-performance-tips.html

0

正確使用緩存,級聯和延遲加載。

調整? Hibernate根據你給出的映射爲你生成SQL。如果你不喜歡SQL,那麼Hibernate可能不是正確的工具。

的性能剩下的必須做的數據庫設計:規範化,索引等

4

我不知道這是一個好辦法,但連接抓取可能是有用的,如果你有一個多TO-一個你知道你會需要的。例如,如果一個Person可以是單個Department的成員,並且你知道你將需要在一個特定的地方,你可以使用類似於Person p的左連接獲取p.department,而Hibernate將會做一個單一的查詢一個Person查詢後跟n個部門查詢。

當進行大量的插入/更新時,定期調用flush而不是每次保存後或最後--Hibernate會批量處理這些語句並將它們一起發送到數據庫,這將減少網絡開銷。

最後,要小心二級緩存。如果你知道你通過id讀取的大部分對象都在緩存中,它可以使事情變得非常快,但是如果依賴它們,但沒有配置好它,那麼你最終會做很多事情單行數據庫查詢,當您只能帶回一個網絡/數據庫旅程的大型結果集時。