整理SSH框架的優缺點


Hibernate優點
(1) 對象/關系數據庫映射(ORM)
它使用時只需要操縱對象,使開發更對象化,拋棄了數據庫中心的思想,完全的面向對象思想
(2) 透明持久化(persistent)
帶有持久化狀態的、具有業務功能的單線程對象,此對象生存期很短。這些對象可能是普通的JavaBeans/POJO,這個對象沒有實現第三方框架或者接口,唯一特殊的是他們正與(

僅僅一個)Session相關聯。一旦這個Session被關閉,這些對象就會脫離持久化狀態,這樣就可被應用程序的任何層自由使用。(例如,用作跟表示層打交道的數據傳輸對象。)  

      
(3) 事務Transaction(org.hibernate.Transaction)

 應用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。它通過抽象將應用從底層具體的JDBC、JTA以及CORBA事務隔離開。某些情況下,一個Session之內可

能包含多個Transaction對象。盡管是否使用該對象是可選的,但無論是使用底層的API還是使用Transaction對象,事務邊界的開啟與關閉是必不可少的。
(4) 它沒有侵入性,即所謂的輕量級框架
(5) 移植性會很好
(6) 緩存機制,提供一級緩存和二級緩存
(7) 簡潔的HQL編程
 
2. Hibernate缺點
(1)  Hibernate在批量數據處理時有弱勢
(2) 針對單一對象簡單的增刪查改,適合於Hibernate,而對於批量的修改,刪除,不適合用Hibernate,這也是OR框架的弱點;要使用數據庫的特定優化機制的時候,不適合用


Spring優缺點  

它是一個開源的項目,而且目前非常活躍;它基於IoC(Inversion of Control,反向控制)和AOP的構架多層j2ee系統的框架,但它不強迫你必須在每一層 中必須使用Spring,因

為它模塊化的很好,允許你根據自己的需要選擇使用它的某一個模塊;它實現了很優雅的MVC,對不同的數據訪問技術提供了統一的 接口,采用IoC使得可以很容易的實現bean的裝

配,提供了簡潔的AOP並據此實現Transcation Managment,等等
優點
a. Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的 API特制的framework,Spring致力於解決剩下的問題。
b. Spring能消除在許多工程中常見的對Singleton的過多使用。根據我的經驗,這是一個很大的問題,它降低了系統的可測試性和面向對象的程度。
c. 通過一種在不同應用程序和項目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經對某個類要尋找的是哪個魔法般的屬性項或系統屬性

感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。Inversion of Control的使用(在下面討論)幫助完成了這種簡化。
d. 通過把對接口編程而不是對類編程的代價幾乎減少到沒有,Spring能夠促進養成好的編程習慣。
e. Spring被設計為讓使用它創建的應用盡可能少的依賴於他的APIs。在Spring應用中的大多數業務對象沒有依賴於Spring。
f. 使用Spring構建的應用程序易於單元測試。
g. Spring能使EJB的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。
h. Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用於許多web應用。例如,Spring能使用AOP提供聲明性事務管理而不通過EJB容器,如果你

僅僅需要與單個數據庫打交道,甚至不需要一個JTA實現。 
i. Spring為數據存取提供了一個一致的框架,不論是使用的是JDBC還是O/R mapping產品(如Hibernate)。
Spring確實使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大價值的。

spring缺點:

jsp中要寫很多代碼、控制器過於靈活,缺少一個公用控制器


Struts的優點:
1:Struts是開源框架,這是它的優點,使開發者能更深入的了解其內部實現機制。
2:實現MVC模式,結構清晰,是開發者只關注業務邏輯的實現。
3:具有豐富的Tag可以用,Struts的標簽庫,如能靈活運用,能大大提高開發效率。
4:頁面導航,頁面導航將是今后的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對於后期維護有着莫大

的好處,尤其當另一個開發團隊接受這個系統的時候,這種優勢將體現得更加明顯。
5:提供Exception處理機制。
6:數據庫鏈接池的管理。

7:支持應用國際化。

Struts的缺點:

層面太多,對小應用不適合,遠不如JSP+JAVABEAN簡潔快速!

Struts2 的優點:
Struts2比Struts1已經有了很大的進步,優點很多,其中主要兩個是:對框架API和ServletAPI的依賴減少,可擴展性提高。

Struts2的Action可以實現框架提供的Action接口也可以不實現這個接口。實際上框架Strut2的Action的要求很低,只要一個類,包含一個無參的、返回值類型為String的方法就行。其實Struts2的Action就是一個POJO。如果用戶寫一個類實現框架提供的Action接口或者繼承框架提供的ActionSupport類, 則可以利用框架中的其他一些功能。比如在,Action接口中定義了一些常量,這些常量通常作為返回值共處理方法調用。

由於Struts2的Action對框架API和Servlet API的依賴減少,因此可測程度大大提高。

Struts2的可擴展性提高了。Struts2的核心jar包中由一個struts-default.xml文件,在該文件中設置了一些默認的bean,resultType類型,默認攔截器棧等,所有這些默認設置,用戶都可以利用配置文件更改,可以更改為自己開發的bean,resulttype等。

因此用戶開發了插件的話只要很簡單的配置就可以很容易的和Struts2框架融合,這實現了框架對插件的可插拔的特性。


面向切面編程的思想在Strut2中也有了很好的體現。最重要的體現就是攔截器的使用。攔截器就是一個一個的小功能單位,用戶可以將這些攔截器合並成一個大的攔截器,這個合成的攔截器就像單獨的攔截器一樣,只要將它配置到一個、Action中就可以。

 
Struts2 的缺點:
我認為Struts2還是有一些不足之處的,我簡單例舉一下,不知道算不算缺點。

一就是在Struts2中Action中取得從jsp中傳過來的參數時還是有點麻煩。可以為Struts2的Action中的屬性配置上Getter和Setter方法,通過默認攔截器,就可以將請求參數設置到這些屬性中。如果用這種方式,當請求參數很多時,Action類就會被這些表單屬性弄的很臃腫,讓人感覺會很亂。還有Action中的屬性不但可以用來獲得請求參數還可以輸出到Jsp中,這樣就會更亂。假設從JSP1中獲得了參數money=100000,但是這個Action還要輸出到JSP2中,但是輸出的格式卻不同,money=100,000,這樣這個Action中的money中的值就變了。

關於校驗那一塊,感覺太煩亂,也太細化了,如果校驗出錯的只能給用戶提示一些信息。如果有多個字段,每個字段出錯時返回到不同的畫面,這個功能在Strut2框架下借助框架提供的校驗邏輯就不容易實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM