2013-05-31 143 views
7

我需要了解應該在域,DAO和服務層對象內的方法類型(在業務邏輯方面)之間的區別。例如,如果我正在構建一個小型Web應用程序來創建,編輯和刪除客戶數據,據我所知在域層對象內部我應該添加Get/Set Customers對象屬性的方法,例如(getName, getDOB,setAddress,setPhone等)。域,DAO和服務層

現在我正在學習的是我應該在DAO和服務圖層對象中放置哪些方法。

在此先感謝您的時間和精力。

回答

8

說到一般(未休眠或春季專用):

DAO層包含查詢和更新您的域層保存到數據存儲區(通常是一個關係數據庫,但不必須的)。使用接口將您的DAO從實際的數據存儲中抽象出來。它並不經常發生,但有時您想更改數據存儲區(或使用mock來測試您的邏輯),並且界面使其更容易。這將有像「保存」,「getById」等方法。

服務層通常包含您的業務邏輯和編排域層和DAO之間的交互。它會有任何方法對您的特定域有意義,比如「verifyBalance」或「calculateTotalMileage」。

+0

您可以請我提供DAO層下方法的例子嗎?據我所知在服務層對象下應該有像verifyBalance,calculateTotalMileage這樣的方法,據我所見,所有計算方法 – MChan

+0

@MChan - DAO主要關心更新,創建,刪除和檢索數據數據庫。在非對象數據存儲的情況下,它也會執行從持久數據(RDB中的行和列)到對象以及從對象到持久數據的映射。方法nanmes可以是任何你想要的,但通常是像「保存」,「刪除」,「查詢」,「更新」。服務層不必具有計算方法。這些方法將是您的業務需要確定或做的任何事情。 – lreeder

6

DAO:用於「包裝」JPA或JDBC或SQL或noSQL調用或任何訪問數據庫系統的「包裝器」方法。

域:與單一類型的實體(域對象)相關的業務邏輯調用。

服務:業務邏輯調用與一組類型的實體或一組相同類型的幾個實體相關聯。

(我不知道英文,對不起......)

這意味着: 服務層比領域層「做大」,往往是靠近前端,往往就需要或使用多個域對象。

域對象封裝大部分東西域的一部分(這就是爲什麼它們被稱爲D.O.)

DAO只是某事的技術,有時需要,有時沒有。 當使用真正的域對象時,通常使用「存儲庫」來隱藏對數據庫系統的訪問,或者添加特殊的數據庫功能或其他。

前端 - >服務方法1 - > d.o. X型,d.o. B,類型X,列表

+0

如果我使用Hibernate,那麼DAO對象方法有什麼用?我的意思是他們如何幫助我進行數據訪問? – MChan