2011-11-24 121 views
3

是否域層和持久層是指相同或不同它們。 域層是我們通常映射到數據庫表的DAO的權利?持久層意味着相同還是更多?域層和持久層差

如果我們調用的POJO的這映射到數據庫表的DAO的,就是我們說的駐留查詢的執行類和填充這些DAO的(POJO)中。

什麼是最好的做法是什麼?將查詢執行代碼保持在這些POJO的內部,還是讓它們成爲一個單獨的類?我的意思是示例假設A是數據庫表A的類映射。我們是否需要實現像ADaoImpl這樣的單獨的類來放置類A的查詢相關代碼需求?我相信它不正確?不是最好的做法,保持所有的DAO對象填充,查詢執行等與所有DAO類相關的稱爲RDBMSDaoImpl的單個類中。所以我們把這個類叫做DAO實現類的應用程序屬於DAO層的吧?

因此,作爲一個總結的POJO(DAO)和DAOImpl是我們的申請權DAO層?而持久層是..?

謝謝。

回答

2

百科: 「A業務邏輯層(BLL),也被稱爲域層」。這就是您的服務層,您可以在其中執行業務邏輯。持久層負責操作數據庫,並由服務層使用。

(順便說一句,我寧願在一個貧血的應用「服務層」,而不是「領域層」 - 即用無狀態,脂肪服務和域對象,只有getter和setter方法的應用程序)

+0

謝謝。所以持久性和道層一樣吧 – Harshana

+0

是的,我會這麼說。雖然理論上可以是兩個單獨的層,我想 – Bozho

+0

Wkikipedia:「在一個BLL對象可以進一步劃分爲業務流程(業務活動)和業務實體業務過程對象通常實現的控制模式,即不包含數據元素,但具有協調業務實體之間交互的方法,業務實體通常對應於邏輯域模型中的實體,而不是物理數據庫模型「。我認爲他們談論的商業實體應該是領域模型,業務流程應該是服務層。不是嗎? – Harshana

1

的域圖層是您對對象和應用程序功能建模的位置。如果您正在構建一個發票應用程序,那麼域圖層應該包含Invoice,Vat和InvoiceItem對象。 dao層負責從存儲中檢索和保存對象(RDMS數據庫,NoSQL數據庫等)。 在你的代碼,你可以有類似

public InvoiceDao { 
    public void insert(Invoice invoice) { 
    //use your database api to insert invoice 
    } 
} 
+0

謝謝。所以你的意思是領域層和DAO層是不同的?聽起來不錯?順便說一句,我已經編輯我的問題,增加更多。如果你對我的擴展問題 – Harshana

+0

有任何問題,你應該將包含數據和業務邏輯的類與保持對象的類分開。 Pojos不是DAO。如果你在我提供的示例代碼中明確指出,Pojos和DAO將使用不同的任務集合來完成不同的任務。 DAO層負責管理POJO的持久狀態。域(或服務)層是在哪裏把業務邏輯 – Giovanni

+0

是的謝謝。但是我應該添加其實現業務邏輯的服務層,並將域對象保留爲pojos而沒有任何業務實現權?所以它的基本流程是查看<->控制器<->服務層(業務邏輯)<-> DAO層<->域層對吧? – Harshana

0

1持久層:是與數據庫, 它由一組類的數據庫,並在該 表中的所有操作映射的處理層。總結:您將數據庫與業務層分開。 2-業務(DAL):啓動(創建)持久層中存在的對象。