2009-04-24 50 views
9

如果您創建一個存儲庫類來封裝給定實體(如PersonRepository)的所有持久性邏輯,但是您的存儲庫類未實現工作單元模式或標識映射模式,它仍被視爲存儲庫嗎?換句話說,存儲庫實現需要工作單元和標識映射,還是我們可以調用任何將我們的持久性邏輯封裝到一個存儲庫的類?存儲庫是否仍然是沒有工作單元的存儲庫?

我應該補充一點。如果一個存儲庫不需要這些模式,它實際上只是一個持久化方法的容器,那麼存儲庫和DAO(數據訪問對象)之間有什麼區別?我們只是爲同一個對象創建多個名稱,還是缺少存儲庫應該是什麼的一部分?

回答

3

是的,它仍然是一個存儲庫。

至於如果存儲庫== DAO,我認爲存儲庫應該在業務邏輯層和DAO應該在數據訪問層,即我認爲他們在不同的層。據我所知,Repository調用DAO方法來加載和保存數據。

3

我想說庫和工作單元模式是正交的。

很多時候,我希望單個工作單元跨越多個存儲庫上的操作,因此其實施將屬於更高層。

1

建立在Sii說的 - 看起來更好給我,如果存儲庫和工作單位是不相關的。分離擔憂?

1

在考慮分離問題時,請記住您的存儲庫將具有數據存儲實現方法,從而使您可以將其保留在主代碼之外。這對單元測試很有幫助,並最終完全取代數據存儲實現(數據存儲實現的一個例子是ASP.NET中的LINQ-to-SQL。)

相關問題