struts spring hibernate 優缺點之我見(綜合貼非原創)

Struts spring hibernate 越來越“氾濫”了,外面常有不少公司面試總會問起SSH優缺點,網絡上也有不少一些文章總結ssh優缺點,但我總感覺總結得不夠完全,沒完全寫到點子上。於是收集了網上的一些意見,加上一些自己見解是以此篇來由。

Struts,spring,hibernate是開源軟件,經過了數千萬的系統的考驗,穩定性,開源便是他們的一大共同優點。具體來講, STRUTS作爲MVC框架的一種實現,有以下優點:
   1、實現MVC模式,程序員只需要關注業務邏輯的實現
   2、STRUTS的豐富的標籤,如可以靈活使用,可以加快一定的開發效率,不過這也成爲了STRUTS的一個詬病,STRUTS標籤太複雜,不好用
   3、業面導航,通過STRUTS的配置文件可以把握整個系統各部份之間的聯繫,方便後期的系統維護
   4、提供EXCEPTION處理機制,支持I18N
   缺點嘛,好象還挺多的
     1、配置文件過於複雜,過於煩鎖,每個具體涉及到操作的ACTION,都要配置FORMBEAN  FORWARD等,每次轉到一個新的展示頁面,就要配置一次forward,如果有10個就要配置10次,而每個ACTION 、 FORBEAN 、     FORWARD、等標籤本身配置項也很多,在一些大型項目中,有可能會大大降低開發效率
     2、標準的STRUTS的ACTION是非線性安全的,是單例的,它用一個實例去完成所有的請求,如果用得不好,有可能會引用線程安全的問題
     3、ACTION測試不方便,由於對SERVLET API依賴過於嚴重,以致單元測試過於依賴WEB容器,不過有一個Junit的擴展工具Struts      TestCase可以實現它的單元測試。
     4、 對Action執行的控制困難. Struts創建一個Action,如果想控制它的執行順序將會非常困難。甚至你要重新去寫Servlet來實現你的這個功能需求。
     5、 對Action 執行前和後的處理. Struts處理Action的時候是基於class的hierarchies,很難在action處理前和後進行操作。(重寫RequestProcessor  processActionPerform()方法可實現此需求)
     6、STRUTS校驗框架的校驗僅能精確到類,而不到精確到方法。如果要對DISPATCHACTION的FORMBEAN進行驗證,不能僅能校驗其中的個別方法,而是校驗了所有了方法。如果要校驗,通常只能手工DISPATCHACTION的方法裏進行硬編碼
     7、FORMBEAN像是一種雞肋,由於是具有FORMBEAN侵入性的,不能傳到更低層次去,作爲系統實體來用,僅起驗證表單,接收表單的作用,一定程度上還造成了struts配置文件的複雜。
     雖然STRUTS看起來很多缺點,然以上問題,對於STRUTS講並非致命性的,穩定性纔是硬道理,而且,通過一定的方法以上問題一定程度上能解決。
     
     Hibernate 優點:
    Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫,屏蔽數據庫的差異,完成數據持久化的重任,
    a.Hibernate 使用 Java 反射機制而不是字節碼增強程序來實現透明性。
    b.Hibernate 是個輕量級框架。映射的靈活性很出色。
    c.它支持各種關係數據庫,從一對一到多對多的各種複雜關係。
   缺點:
      HIBERNATE由於是對JDBC進行了輕量級的封裝,內存的消耗要比用純用JDBC的大,批量操作效率一定程序上也要比JDBC慢。
      HIBERNATE靈活性很高,配置項繁複,一定程序上增加了新手的學習週期,用Hibernate如果用得不好,很容易造成性能問題。
      Hibernate在動態建表,批量操作方面,能力有限。查詢對象,一般是HIBERNATE本身智能地發送SQL語句,雖然有本地SQL查詢,不過DBA優化數據庫查詢在HIBERNATE面前有點顯得無能爲力
      Hibernate的opensessioninview引發性能擔憂,  Hibernate通過opensessioninview解決實體在頁面上延遲加載問題,擔是它需要把數據庫連接保持在頁面上,也擴大了事務的邊界。如果在過多網速很慢的用戶,有可能會造成數據庫連接用盡的危險。
   spring 產生在without ejb的年代,它的使命就是要簡化企業級開發,確實,它一定程度上完成了它的“使命”,spring通過ioc  aop  聲名式事務,一些模板類等,使得對象更加用趣了,事務管理更加方便了,編寫代碼更加簡便了。如果要說spring有什麼優點的話,以上都可以說是它的優點吧。不過要說spring有什麼缺點?我想是不支持分佈式訪問,分佈式事務和集羣。      

發佈了25 篇原創文章 · 獲贊 0 · 訪問量 1576
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章