2011-10-29 65 views
0

我最近有一個緩慢的電網負荷來解決性能問題。經調查後,它看起來像有人曾用一個List<Product>填充網格。問題是,該產品的目標有很多特性,其中不乏not.lazyloads()的,其中大部分甚至不需要網格。Hibernate體系的最佳實踐

因此,要解決這個問題,我創建了一個名爲ProductLite新的對象,即只有懶加載,大多數的關鍵信息的連接和性能是非常好。而不是做10,000分貝點擊,它去了1.

我對SO社區的問題,你如何建模你的對象?我想,所有對象都應該有一個「細節」和「信息」的版本,因爲有時需要和集約目標負載。 IE瀏覽器。 產品詳細將包含所有的信息,而不是在列表中使用,而ProductInfo只會攜帶高層次信息在列表中使用,快速查找等

是否有已被採納爲最佳標準實踐建模對象?

+0

相關問題:http://stackoverflow.com/questions/2435111/using-lite-版本的實體在nhibernate關係 –

+0

哈哈,埃連,這幾乎是確切的,對不起,我錯過了。很高興聽到我並不孤單在這場鬥爭中。 :) –

回答

4

這裏的問題是您將Domain Model對象與DTO/Presentation Model對象混淆。

我通常不願考慮任何指引「最佳做法」,但這裏有一些一般提示:

  • 域對象應該是每一個表(不考慮繼承)
  • 延遲加載不應在映射中禁用。 Good article about this
  • 使用合理的實體和集合batch-size設置(經驗法則:用你的頁面大小)
  • 使用緩存,對於多數爲只讀對象
  • 用突起(匿名,類型,對象數組,至少什麼作品)如果你真的需要只加載多個對象的幾個領域,當你不需要編輯一個對象
+0

哇迭戈,我甚至沒有考慮過你的一些提示,謝謝你的建議。很高興聽到這些偉大的指導方針... –