2010-08-16 55 views
1

在我的設計中,我有從數據庫獲取實體的Repository類(它是如何做的並不重要)。但爲了將實體保存回數據庫,是否有意義使存儲庫也這樣做?或者它更有意義創建另一個類,(如的UnitOfWork),並賦予它的責任是使其接受實體保存的東西,並通過調用它save()告訴它繼續前進,做它的魔力?存儲庫應該是加載和保存實體嗎?

回答

5

在DDD中,存儲庫絕對是其中的所有所有持久性相關的東西預計將駐留。

如果你已經保存到和封裝在一個以上的類加載數據庫,數據庫相關的代碼將被分散在太多的地方在你的代碼庫 - 從而使維護顯著困難。而且,這個代碼的後來讀者可能很有可能一見鍾情,因爲這樣的設計不符合大多數開發人員期望找到的準標準。

當然,你可以有不同的讀/寫器,輔助類,如果這是在您的項目爲宜。但是,從業務層看到的,持久性的唯一網關應該是倉庫...

HTH!
托馬斯

1

我會給庫用於封裝載各方面的全面責任和保存。這可以確保棘手的問題,例如管理讀者和寫者之間的爭用,有一個地方需要管理。

儲存庫很可能會使用你的UnitOfWork類,並可能需要暴露BeginUow及提交方法。

1

福勒says該存儲庫API應該模仿集合:

域和數據映射層之間的存儲庫介導,作用像一個內存域對象集合