最近在學SSH,但突然看到了SSM,感覺兩者很相似,于是就開始打破砂鍋問到底,網上找了很多資料,但是由于本人對SSM的認識隻存在于理論上,是以就泛泛的談論下自己對這兩個java架構的認識,做一個小總結。
記得很久前看到一個标題,名為“MVC已死”,說的MVC這種思想已經有一些不适應了,新的模式MOVE,正在茁壯成長,MOVE指即Models(模型)、Operations(操作)、Views(視圖)、Events(事件),當時看了很多資料,覺得人家分析的真棒,不過現在一點印象都沒有了,為什麼?因為沒有總結,沒有形成自己的認識,是以盡管自己沒有學習SSM,但是還是想總結對比下,起碼來個宏觀的認識也是好的。
我們通常所說的SSH指的是:Spring+Struts+Hibernate。而SSM指的是:spring +SpringMVC + MyBatis。關于SSM和SSH 對比其實更多的從SpringMVC 和 Struts這一方面對比,和Hibernate與MyBatis的對比。
首先兩者有個共同之處,那就是兩者都資料javaweb層的開發架構,都是mvc模式的的經典産品,都實作了頁面分離控制的功能,但是兩者之間是有差別的。
有一種言論,或許已經成為了部分人眼中的事實,那就是SpringMVC已經超越了Struts,在開發中,人們更願意使用SpringMVC而不是Struts。
因為Spring MVC屬于SpringFrameWork的後續産品,已經融合在SpringWeb Flow裡面。Spring MVC 分離了控制器、模型對象、分派器以及處理程式對象的角色,這種分離讓它們更容易進行定制。
而且由于同是屬于一個開發公司,是以SpringMVC比Struts更容易契合Spring技術,在擴充和靈活性上更勝一籌。
Struts的優勢在于靜态注入,插件機制和攔截器鍊,但是struts存在漏洞,經常會被作為攻擊點進行沖擊。相比更加安全簡單的SpringMVC,開發者漸漸開發放棄了它。
Hibernate與Mybatis都是流行的持久層開發架構,一句話概括:MyBatis 簡單易上手;hibernate成熟,市場推廣率高。
MyBatis可以進行更為細緻的SQL優化,可以減少查詢字段。
MyBatis容易掌握,而Hibernate門檻較高。
更重要的是,mybatis提供了對應各種用途、功能的插件,有需求?好,來個插件就搞定。而hibernate在這一方面是遠遠比不上mybatis的。
Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。
Hibernate對對象的維護和緩存要比MyBatis好,對增删改查的對象的維護要友善。
Hibernate資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。
Hibernate有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳。
但是hibernat缺點很明确,如果涉及到多張關聯表的調用時:
1. 多表關聯等比較複雜,使用的成本并不低;
2. 效率比較低,在大型項目中很少會使用到它,因為sql都是自動生成的,不太好進行人工的優化。
綜上,在如今的開發過程中,人們越來越多的喜歡選擇SSM,因為它更适合靈活開發,而靈活開發是現在市場備受推廣的一種方式。
我想說,我們應該努力學習,第一:知識有個演變的過程,他們都是相同,有了基礎學習新的會省力很多。第二:抓緊時間學習,因為我們需要學習的東西太多了。因為這些都是幾年前的事情了。