SSH框架優缺點

Struts優缺點 

 

優點: 

1.開源軟件,能更深入的瞭解其內部實現機制。 

2.Taglib標記庫,靈活動用,能大大提高開發效率。 

3.頁面導航使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統 

各部分之間的聯繫,這對於後期的維護有着莫大的好處。尤其是當另一批開發者 

接手這個項目時,這種優勢體現得更加明顯。 

4.提供Exception處理機制. 

5.數據庫鏈接池管理 

6.Struts的Action必需是thread-safe方式,它僅僅允許一個實例去處理所 

有的請求。所以action用到的所有的資源都必需統一同步,這個就引起了線程安 

全的問題。 

缺點: 

Taglib是Struts的一大優勢,但對於初學者而言,卻需要一個持續學習的過程, 

甚至還會打亂你網頁編寫的習慣,但是,當你習慣了它時,你會覺得它真的很棒。 

Struts將MVC的Controller一分爲三,在獲得結構更加清晰的同時,也增加了系 

統的複雜度。 

ActionForms使用不便、無法進行單元測試(StrutsTestCase只能用於集成) 

 

Spring的原理和優點 

Spring真正的精華是它的Ioc模式實現的BeanFactory和AOP,它自己在這 

個基礎上延伸的功能有些畫蛇添足。 

Ioc模式是什麼 

可伸縮性和重/輕量,誰是實用系統的架構主選? 

Spring 

它是一個開源的項目,而且目前非常活躍;它基於IoC(InversionofControl,反 

向控制)和AOP的構架多層j2ee系統的框架,但它不強迫你必須在每一層中 

必須使用Spring,因爲它模塊化的很好,允許你根據自己的需要選擇使用它的某 

一個模塊;它實現了很優雅的MVC,對不同的數據訪問技術提供了統一的接口, 

採用IoC使得可以很容易的實現bean的裝配,提供了簡潔的AOP並據此實現 

TranscationManagment,等等 

優點 

a.Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅 

僅使用了Struts或其他爲J2EE的API特製的framework,Spring致力於解決剩 

下的問題。 

b.Spring能消除在許多工程中常見的對Singleton的過多使用。根據我的經驗, 

這是一個很大的問題,它降低了系統的可測試性和麪向對象的程度。 

c. 通過一種在不同應用程序和項目間一致的方法來處理配置文件,Spring能消 

除各種各樣自定義格式的屬性文件的需要。曾經對某個類要尋找的是哪個魔法般 

的屬性項或系統屬性感到不解,爲此不得不去讀Javadoc甚至源編碼?有了 

Spring,你僅僅需要看看類的JavaBean屬性。InversionofControl的使用(在下 

面討論)幫助完成了這種簡化。 

d.?通過把對接口編程而不是對類編程的代價幾乎減少到沒有,Spring能夠促進 

養成好的編程習慣。 

e.Spring被設計爲讓使用它創建的應用儘可能少的依賴於他的APIs。在Spring 

應用中的大多數業務對象沒有依賴於Spring。 

f. 使用Spring構建的應用程序易於單元測試。 

g.Spring能使EJB的使用成爲一個實現選擇,而不是應用架構的必然選擇。你能 

選擇用POJOs或localEJBs來實現業務接口,卻不會影響調用代碼。 

h.Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物, 

它們適用於許多web應用。例如,Spring能使用AOP提供聲明性事務管理而不 

通過EJB容器,如果你僅僅需要與單個數據庫打交道,甚至不需要一個JTA實 

現。 

i. Spring爲數據存取提供了一個一致的框架,不論是使用的是JDBC還是O/R 

mapping產品(如Hibernate)。 

Spring確實使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大 

價值的。 

缺點: 

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

 

 

Hibernate 

 

優點: 

Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。 

Hibernate可以用在任何JDBC可以使用的場合,例如Java應用程序的數據庫訪 

問代碼,DAO接口的實現類,甚至可以是BMP裏面的訪問數據庫的代碼。 

Hibernate是一個和JDBC密切關聯的框架,所以Hibernate的兼容性和JDBC 

驅動,和數據庫都有一定的關係,但是和使用它的Java程序,和AppServer沒 

有任何關係,也不存在兼容性問題。 

Hibernate不能用來直接和EntityBean做對比,只有放在整個J2EE項目的框 

架中才能比較。並且即使是放在軟件整體框架中來看,Hibernate也是做爲JDBC 

的替代者出現的,而不是EntityBean的替代者出現的, 

Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了非常 

輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱 

數據庫。 

Hibernate可以應用在任何使用JDBC的場合。 

 

Hibernate使用Java 反射機制而不是字節碼增強程序來實現透明性。 

 

Hibernate的性能非常好,因爲它是個輕量級框架。映射的靈活性很出色。 

 

它支持各種關係數據庫,從一對一到多對多的各種複雜關係。 

缺點: 

它限制您所使用的對象模型。(例如,一個持久性類不能映射到多個表)。 

讓我再列一次我已經列n次的框架結構: 

傳統的架構: 

1)SessionBean<->EntityBean<->DB 

爲了解決性能障礙的替代架構: 

2)SessionBean<->DAO<->JDBC<->DB 

使用Hibernate來提高上面架構的開發效率的架構: 

3)SessionBean<->DAO<->Hibernate<->DB 

就上面3個架構來分析: 

1、內存消耗:採用JDBC的架構2無疑是最省內存的,Hibernate的架構次之,EB 

的架構1最差。 

2、運行效率:如果JDBC的代碼寫的非常優化,那麼JDBC架構運行效率最高, 

但是實際項目中,這一點幾乎做不到,這需要程序員非常精通JDBC,運用Batch 

語句,調整PreapredStatement的BatchSize和FetchSize等參數,以及在必要的 

情況下采用結果集cache等等。而一般情況下程序員是做不到這一點的。因此 

Hibernate架構表現出最快的運行效率。EB的架構效率會差的很遠。 

3、開發效率:在有JBuilder的支持下以及簡單的項目,EB架構開發效率最高, 

JDBC次之,Hibernate最差。但是在大的項目,特別是持久層關係映射很複雜的 

情況下,Hibernate效率高的驚人,JDBC次之,而EB架構很可能會失敗。 

 

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