2012-01-21 81 views
1

我從2年來一直在使用playframework。 Framework具有「JPA on streoids」功能。我非常喜歡它。使用模型作爲GenericDAO

http://www.playframework.org/documentation/1.2.4/5things

這是示例代碼:

User connectedUser = User.find("byEmail", connected()).first(); 
... 
connectedUser.delete(); 
... 
connectedUser.save(); 

此形式給出了使用大量的輔助方法。其中一些是靜態方法。每個模型文件擴展了Model類和瞧。你可以使用查找,保存,刪除,取...

當今我使用Spring MVC 3.1。我喜歡它的MVC用法。 但連接系統有點複雜。

我讀了很多文章。其中一些使用服務層,dao層和模型層。其中一些只使用dao圖層和模型圖層。 有些人正在爲每個模型對象以及服務類和服務接口創建DAO接口和DAO類。 其中一些使用通用的DAO類。

事實上,我對所有這些變體有點困惑。

  • 我們爲什麼要使用DAO層。一個hibernateUtil類和命名爲 的查詢對於CRUD操作是不夠的。
  • 爲什麼我們不使用遊戲框架方法?
  • 爲什麼我們爲每個DAO類使用接口?只是實施是不夠的?
  • 爲什麼我們使用不必要的服務層?

回答

4

DAO層用於將數據訪問代碼與業務邏輯代碼隔離開來。當你開始對業務邏輯進行單元測試時,這是特別有用的,因爲它允許模擬DAO。所有的應用程序不只是有CRUD操作。

接口具有相同的可測試性優勢。閱讀what reasons are there to use interfaces (Java EE or Spring and JPA),我解釋了接口的優點。

服務層是最重要的層。這是用來劃分交易的標準。你可以避免使用DAO層,特別是如果你有極其簡單的類似於數據訪問的情況。但服務層是至關重要的。你不想在他們自己的事務中有三個插入和一個更新。請參閱DAO Design Pattern and Servlets以解釋爲什麼服務層如此重要的問題。