2010-09-30 101 views
4

我是Spring和hibernate的新手。 我正試圖在j2ee應用程序中學習最佳實踐和設計方法。spring mvc dao和服務bean映射

我有一個設法創建一個基本的春季mvc網絡應用程序。現在尋找那 - 我應該如何將我的服務bean映射到dao bean或者應該只使用dao beans。 - 是否有任何需要使DAO類單身人士 - 如果我使用相同的dao bean的jsp,然後例如onSubmit如果我必須在多個表(dao beans)上輸入數據,那我該怎麼做。 1個服務bean要超過1個dao bean?

和設計使用的彈簧休眠良好的Web應用程序的任何refrence材料將讚賞;)

感謝

回答

2

您必須使用服務豆。服務邏輯應該只在那裏。 DAO只能用於DB相關操作。

現在你可以在你的服務bean中注入多個DAO。

+0

我可以注入DAO到服務,而只使用spring-mvc,只需要添加applicationContext.xml? – Deam 2010-10-02 10:28:31

+0

@ user330281是的,你應該將DAO注入到服務層中,而關於'while while只使用spring-mvc並且只需要添加applicationContext.xml ??'這部分我不清楚 – 2010-10-04 05:49:16

1

DAO層和服務層是不同的實體:

DAO負責獲取並把單個對象從\爲DB。例如,從數據庫中獲取User(id,name,lastname)。

服務層負責您的業務邏輯。它可以使用幾個DAO對象來執行一個動作。例如,將消息從一個用戶發送到另一個用戶,並將其保存在第一個用戶的發送文件夾和收件人的收件箱中。

1

服務是關於向用戶展示用戶可以承擔的業務功能的外觀。基本上,如果您有一組低級用例,則該服務上的方法將與單個用戶操作對齊。服務是事務性的,通常如果用戶做了我們想要的事情的所有後果一起承諾。控制器和服務之間的分離意味着我們有一個地方可以放置webapp特定的功能,比如獲取請求參數,進行驗證,選擇轉發或重定向到的位置,以及放置業務邏輯的獨立位置等取決於webapp apis,並且關於什麼對象使用哪些數據訪問對象更新哪些值並獲得持久性。

我看到很多情況下,人們似乎認爲他們需要每道道一項服務。我認爲他們的假設是,因爲數據訪問對象和控制器和模型對於如何定義它們是相當機械的,所以服務必須是相同的方式,並且它們構建它們時不考慮正在實現的用例。會發生什麼事情呢,除了有大量無用的服務樣板代碼之外,所有的業務邏輯都會在控制器混亂的情況下與Web特定的代碼混淆在一起,並且控制器變得龐大而難以管理。如果你的應用程序非常簡單,那麼你可以在這裏得到一段時間,但它是混亂的,很難測試,而且這通常是一個壞主意。分離關注點,將基礎設施代碼保存在一個地方,將業務代碼保存在另一個地方,這是我們應該瞄準的目標,正確使用服務對實現目標非常有幫助。

2

FWIW - 我剛剛在Spring上通過類似的學習過程。好消息是,谷歌有很多例子,壞消息是,沒有很多對於新手來說很好的「完整」例子(同樣,如果你打算瞄準v3 Spring,那裏會有很多v3以前的東西,這些東西可能會因爲新的基線)。對我來說有效的是:從SpringSource站點上的示例應用程序開始(http://www.springsource.org/documentation)。在他們的一些例子之間,幾乎所有的東西都是你需要的,至少是最簡單的形式。當我在需要的示例中找到某些內容時,我會根據類似的術語(某些@註釋等)進行搜索以找到有關該主題的更完整信息/更好的示例。許多搜索引導我回到這個網站,這就是爲什麼我開始在這裏經常旅行 - 很多很好的問題已經得到解答。我想這不是一個非常有洞察力的答案,但是這個過程讓我起牀並在相當快的時間內完成基礎知識。