2010-11-10 27 views
2

我在article中發現了以下內容:「絕不應直接從客戶端(服務和其他消費者類)調用DAO類。客戶端應始終調用域對象,該對象又應調用DAO以將數據保存到數據存儲。 」。在域對象中使用DAO是否正確?

這不是我在做DDD之前看到過的事情。對此有何想法?

謝謝

回答

1

你從文章引用的最後一句話可能寫得更清楚。我懷疑作者的意思(重點是我添加的文本):

的客戶,應該總是調用域對象應該調用庫這反過來應該調用DAO對數據持久化到數據存儲。

+0

不過,我一直認爲POJO不應該有任何引用的存儲庫? – 2010-11-10 17:28:36

+0

這就是Repository模式的意圖。當一個域對象想要與另一個域對象協作時,它會爲該對象請求一個Repository。 – 2010-11-10 17:34:22

+0

所以我應該把搜索和報告方法(比如getChildrenByABC(A a,B b,C c)在域對象中嗎?怎麼樣分頁(getChildren(int offset,int count)) - 你會把所有的域對象? – 2010-11-10 17:37:38

1

「DAO類不應該直接從客戶端(服務和 等消費類)稱爲 ,客戶端 ,應該總是調用域對象 這反過來應該調用DAO的 的持久化數據到數據 商店。「

不,我認爲這是相當錯誤的。

域對象可能不應該引用存儲庫。

如果域對象需要與其他域對象協作,它可以引發域事件或將其他域對象作爲方法的參數(在這種情況下,客戶端/調用方通過存儲庫檢索所有必需的域對象)。

相關問題