2012-01-31 38 views
1

我目前正在將簡單的預算應用程序作爲個人項目進行工作。它基於Zend Framework構建,並使用MVC體系結構和數據映射器模式。控制器通過數據映射器存儲和接收域模型實體,並將它們傳遞給視圖。數據映射器通過Zend Db Adapter執行預處理語句。在zend框架中延遲加載集合

域模型由用戶組成,用戶有許多交易和許多預算類別。每筆交易都可以分配給一個類別。

的建築作品不夠好簡單的CRUD操作,但有幾個嚴重的缺點的:

所有性能的
  • 第一。每個請求都實例化一個用戶對象,數據映射器會自動從數據庫中提取該用戶的所有預算類別。這些反過來從數據庫中提取其子交易記錄。這顯然是低效的。其次,在處理多個模型實體或實體的子集時,控制器中有很多代碼,例如某個時間段內的一組事務。我不確定該把代碼放在哪裏。

延遲加載似乎是性能問題的明顯解決方案。但我不確定如何用數據映射器和對象集合來實現這一點。特別是,當客戶端代碼只請求一個集合的子集時,應該如何延遲加載?

回答

0

我不能幫助,但帕德里布雷迪可以。
Lazy loading Domain Objects
查閱章節9.6.4和9.6.5中的生存依存。他解釋你到底在問什麼。

+0

我不認爲這本書的想法是最好的。向'User'實體注入'AuthorMapper'似乎不是一個好主意。 – Optimus 2012-01-31 14:59:25

+0

@boosis或許他選擇的實施並不適合您的應用,但他所描述的技術應該爲糾正您感覺到的問題提供基礎。 – RockyFord 2012-02-01 03:59:48

+0

@RockyFord謝謝。我已經閱讀了Models的一章,但沒有提到如何處理集合,特別是如何在延遲加載時添加條件。 – James 2012-02-01 16:04:35