struts+spring+hibernate之間的關系與差別 (轉)

          出處:http://www.54bk.com/user1/263/archives/2005/27238.html
           
          Struts:用來作VC部分,即控制和顯示作用;
          Spring:用來作數據庫操作的事務處理,在配置文件里配置好就OK了;
          Hibernate:用來作DAO處理,在此用了Spring的getHibernateTemplate()方法來操作hsql進行數據增刪改等操作。


          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,會讓我們的成功來的更容易。
          posted on 2006-01-09 09:57 隨風逝 閱讀(1296) 評論(1)  編輯  收藏 所屬分類: hibernatespringstruts

          評論

          # re: struts+spring+hibernate之間的關系與差別 (轉) 2006-01-09 09:58 sunny  回復  更多評論   

          初學這些框架,我覺得搞清出其中的關系比較重要,也有利于我有針對的學習,希望也給很多初學者幫助。
          主站蜘蛛池模板: 罗定市| 古蔺县| 江孜县| 巴东县| 阳曲县| 松原市| 会理县| 湖口县| 天等县| 通化县| 临武县| 大竹县| 云南省| 若尔盖县| 大同县| 灵石县| 台南市| 杭锦后旗| 临猗县| 和顺县| 湾仔区| 九龙城区| 凯里市| 台前县| 体育| 邵阳县| 浮梁县| 内丘县| 比如县| 嘉荫县| 蓝田县| 桦川县| 六枝特区| 灯塔市| 夏河县| 通化市| 九江市| 电白县| 府谷县| 渭源县| 香河县|