| 導購 | 订阅 | 在线投稿
分享
 
 
 

Struts+Spring+Hibernate 分析

2007-02-07 12:18:48  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
  現在給美國老作項目,他們那邊要求一定要用"Struts+Spring+Hibernate"來實現,下面就是我對它們組合的理 解:
   1,先說說表示層
   其實沒有必要使用struts,除非你有曆史遺留問題不得不用struts,因爲spring的mvc已經足夠好了:
  a. 清晰的模型對象傳遞,這個模型對象可以是任何java對象,如果你不在意在各層之間傳遞同一個對象的
   話,這個模型對象就可以是hibernate的persistent object,通過open session in view,你可以以一致的方式使用業
   務模型對象。
  b. reference data,讓你清晰的處理look up數據。
  c. 多種可供選擇的視圖解析類型,可以在prpperties文件中定義page的邏輯名,或者定義在xml文件裏的struts
   tiles邏輯名。
  d. 無幹擾的數據綁定,一個<spring:bind>可以對模型對象和form進行綁定,就像struts自動填充formbean一樣,但
   spring 的綁定功能不會幹擾界面布局,也就是說,你仍然可以使用html編輯器對頁面進行處理。
  e. 客戶端驗證。
  f. 服務器端驗證。
  g. 多種可供選擇的控制器,其中支持表單的控制器提供了類似vb中表單事件處理的功能,這是一系列的
   workflow,在你認爲合適的地方,插入你的處理代碼。
  spring mvc與struts比較,可能只是少了很多taglib和頁面布局,但這都可以通過第三方工具補充,因爲視圖相比于其他部分,畢竟更輕量級一些。可以選擇的第三方工具可以是:displaytag,struts-menu,struts tiles,等等。
  2,在說說業務邏輯部分
   業務邏輯類可以用spring的beans進行配置,並由spring管理與表現層的控制器及更下層的DAO對象的關系。另外,還可以進行配置性的事務處理,一個interceptor配置,免去了你的所有煩惱。
  3, dao層
  用spring 封裝後的hibernate API,讓Hibernate繼續瘦身,並且通過spring建立與上層的關系。
  4, 最後,說說hibernate的po
  你可以選擇你喜歡的任何方式進行建模,以下工具提供了足夠的支持:
  a. 從java對象到hbm文件:xdoclet
  b. 從hbm文件到java對象:hibernate extension
  c. 從數據庫到hbm文件:middlegen
  d. 從hbm文件到數據庫:SchemaExport
  至于可供參考的項目,可以看看spring的例子petclinic(spring+hibernate),還有一個不可不看的網站:http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse(struts+spring+hibernate或spring mvc + spring +hibernate)。另外,spring帶的mvc step-by-step是一個很好的入門教程。
  需要說明的是,spring僅僅爲我們提供了一種設計和實現框架的方式,因此,項目的成功與否,是與我們的構架設計緊密相關的,在有了好的設計思想以後,善用spring,會讓我們的成功來的更容易。
 
現在給美國老作項目,他們那邊要求一定要用"Struts+Spring+Hibernate"來實現,下面就是我對它們組合的理 解: 1,先說說表示層 其實沒有必要使用struts,除非你有曆史遺留問題不得不用struts,因爲spring的mvc已經足夠好了: a. 清晰的模型對象傳遞,這個模型對象可以是任何java對象,如果你不在意在各層之間傳遞同一個對象的 話,這個模型對象就可以是hibernate的persistent object,通過open session in view,你可以以一致的方式使用業 務模型對象。 b. reference data,讓你清晰的處理look up數據。 c. 多種可供選擇的視圖解析類型,可以在prpperties文件中定義page的邏輯名,或者定義在xml文件裏的struts tiles邏輯名。 d. 無幹擾的數據綁定,一個<spring:bind>可以對模型對象和form進行綁定,就像struts自動填充formbean一樣,但 spring 的綁定功能不會幹擾界面布局,也就是說,你仍然可以使用html編輯器對頁面進行處理。 e. 客戶端驗證。 f. 服務器端驗證。 g. 多種可供選擇的控制器,其中支持表單的控制器提供了類似vb中表單事件處理的功能,這是一系列的 workflow,在你認爲合適的地方,插入你的處理代碼。 spring mvc與struts比較,可能只是少了很多taglib和頁面布局,但這都可以通過第三方工具補充,因爲視圖相比于其他部分,畢竟更輕量級一些。可以選擇的第三方工具可以是:displaytag,struts-menu,struts tiles,等等。 2,在說說業務邏輯部分 業務邏輯類可以用spring的beans進行配置,並由spring管理與表現層的控制器及更下層的DAO對象的關系。另外,還可以進行配置性的事務處理,一個interceptor配置,免去了你的所有煩惱。 3, dao層 用spring 封裝後的hibernate API,讓Hibernate繼續瘦身,並且通過spring建立與上層的關系。 4, 最後,說說hibernate的po 你可以選擇你喜歡的任何方式進行建模,以下工具提供了足夠的支持: a. 從java對象到hbm文件:xdoclet b. 從hbm文件到java對象:hibernate extension c. 從數據庫到hbm文件:middlegen d. 從hbm文件到數據庫:SchemaExport 至于可供參考的項目,可以看看spring的例子petclinic(spring+hibernate),還有一個不可不看的網站:http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse(struts+spring+hibernate或spring mvc + spring +hibernate)。另外,spring帶的mvc step-by-step是一個很好的入門教程。 需要說明的是,spring僅僅爲我們提供了一種設計和實現框架的方式,因此,項目的成功與否,是與我們的構架設計緊密相關的,在有了好的設計思想以後,善用spring,會讓我們的成功來的更容易。
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
  免責聲明:本文僅代表作者個人觀點,與王朝網絡無關。王朝網絡登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
© 2005- 王朝網路 版權所有