ssh框架被淘汰的原因


SSH就是Struts2+Spring+Hibernate。

三個組件的簡單介紹

Struts2:通俗的講就是為了完成MVC模型中的C的功能,也就是編寫具體的業務邏輯的地方。從他的設計上來看就是請求到了web容器,然后經過了一系列的過濾器,再通過請求FilterDispatcher詢問ActionMapper是否需要調用某個Action,如果要調用的話, 然后執行先前配置好的攔截器,就到了我們的具體邏輯,執行完之后,還會繼續執行對應的攔截器和過濾器邏輯,最后返回給調用方。

Spring:通俗的講只是通過它的核心IOC來管理我們編寫邏輯中間的一些bean。我們通過IOC來減少耦合和簡化對象的操作。

Hibernate: 是對象關系映射框架,簡單的說,它就是對JDBC進行了非常輕量級的對象封裝,目的是讓操作數據庫像操作對象一樣簡單。

這個就是SSH三者最開始的目的,他們各司其職,在缺乏框架的年代,很好的配合着,以至於一直流傳了下來。

三個組件現在的發展情況

介紹完了SSH的本質,接下來介紹一下這三個組件現在的發展情況。

首先Struts2框架爆出了很多高危漏洞,使得應用的安全有了很大程度的隱患。然后很多做法也不夠優雅,特別是JSR-311標准出台之后,隨着Restful方式的流程程度普及開來,Struts2越來越被大家所拋棄,雖然struts2也加入了一些plugin來進行支持REST,但是還是過於繁瑣。所以導致了現在Struts2的沒落。

然后spring以IOC為核心,然后進行大力擴展,先后推出了SpringMVC來完成邏輯層的編寫邏輯,現在SpringMVC基本已經完成了替代struts2的工作(一些很老的項目可能沒有進行改造)。然后在SpringMVC大獲成功之后,基於SpringMVC和web容器,把他們兩者進行結合,推出了SpringBoot,經過幾年的發展和醞釀,現在后端基本被Spring系列所統一。所以現在要我來講,后端框架的王者就只有一個Spring系列了。

最后Hibernate只是一個對操作數據庫進行映射的ORM框架,有很多也可以替代,比如Ibatis, Mybatis, JPA等等,因為ORM框架有自己的優點也有自己缺點,就看使用者如何進行權衡了。

從我個人的意見來看,簡單的業務邏輯直接用JPA(Spring基於Hibernate的封裝)就可以了,如果是復雜的,還不如直接寫SQL來得簡單,調優也方便。

三個組件淘汰的原因

現在提倡和流行的是前后端分離(這里指的分離是完全分離,而不是之前通過模版進行分離,前后端數據交互是根據HTTP進行的)。

並且后端設計的接口趨向於Restful的架構。為什么有這種變化,因為現在前端不僅僅是Web瀏覽器端,在移動互聯網時代,APP也是很大一部分。所以從后端的角度來看,他們都是客戶端。APP是沒辦法通過模版進行渲染的,只能通過HTTP傳輸數據。這也是后端服務發展的趨勢。

Java后端技術有很多,如果想要提高,最好的捷徑就是踏踏實實的進行學習,對於剛工作不久的人來說,可以把學習SSH框架的時間用來學習SpringMVC,然后掌握Spring的核心,然后學習什么是Restful概念,最后可以了解JDBC的一些概念(前期不推薦學習ORM框架)。

另外的有SSM框架,老一點項目Spring+Struts2+Mybatis,現在主流是Spring+SpringMVC+Mybatis。

Mybatis是半自動的,Mybatis自動化的地方在於它把數據給我們封裝后返回給我們,手動的部分在於我們自己來寫sql,這樣的方式很靈活,我們可以根據需求寫最優的sql語句。

Hibernate是全自動的,sql都幫我們寫好了,但是這也是Hibernate一個很大的缺點,有時候它給的sql語句並不是最優的,就極大的影響了我們的效率。

 

"當我們失去的時候,才會知道自己曾經擁有。"


免責聲明!

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



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