2010-06-14 142 views
7

試圖讓我的頭在將對象保存到持久性存儲時將服務層和存儲庫層的責任整合起來。服務和存儲庫層的責任

我站在下目前是這樣的:

在我的控制,我創建從用戶提交的(來自表單)的數據的「注」的對象。然後用戶在「NoteService」(通過依賴注入)中調用「Save」。

在「NoteService」的「Save」方法中,我執行業務邏輯驗證,然後將「Note」對象傳遞給「NoteRepository」的「Save」方法。

然後,「NoteRepository」的「Save」方法將檢查此對象上是否存在主鍵,如果是,則從db中獲取該對象,並使用通過「Note」對象更新其屬性然後將其保存回數據庫。 如果沒有主鍵,那麼該對象將簡單地保存到數據庫,然後返回到具有新創建的主鍵的服務。

+0

我認爲你說的很好,什麼問題? – uvita 2010-06-14 14:13:52

+0

我的問題基本上是這樣做的事情,即這是正確的模式/工作流程 – Gazeth 2010-06-16 15:59:14

回答

4

你對我的關注聽起來很不錯。我們遵循相同的模式,但傾向於在存儲庫層上再增加一個圖層。我們稱之爲領域層,並在那裏執行我們所有的業務邏輯。我們的服務層只是傳遞給我們的域名,以防將來我們的任何服務發佈到ESB。

你正在做的最大的好處不是混淆了很多人傾向於做的控制器中的所有業務和數據庫邏輯。如果你真的想遵循MVC,你總是希望你的控制器儘可能輕。