回覆列表
  • 1 # HongyeLinux

    SSH指的是:spring+Struts+hibernate;而SSM指的是:spring +SpringMVC + MyBatis。

    1、Spring是是開源框架,是輕量級的IoC和AOP的容器框架,主要是針對javaBean的生命週期進行管理的輕量級容器,可以單獨使用,也可以和Struts框架,ibatis框架等組合使用。

    1)IoC(Inversion of Control)控制反轉,物件建立責任的反轉,在spring中BeanFacotory是IoC容器的核心介面,負責例項化,定位,配置應用程式中的物件及建立這些物件間的依賴。XmlBeanFacotory實現BeanFactory介面,透過獲取xml配置檔案資料,組成應用物件及物件間的依賴關係。Spring中有三種注入方式,一種是set注入,一種是介面注入,另一種是構造方法注入。

    2)AOP面向切面程式設計

    aop就是縱向的程式設計,如果業務1和業務2都需要一個共同的操作,與其往每個業務中都新增同樣的程式碼,不如寫一遍程式碼,讓兩個業務共同使用這段程式碼。

    spring中面向切面變成的實現有兩種方式,一種是動態代理,一種是CGLIB,動態代理必須要提供介面,而CGLIB實現是有繼承。

    Spring框架優點

    1)輕量級的容器框架沒有侵入性

    2)使用IoC容器更加容易組合物件直接間關係,面向介面程式設計,降低耦合

    3)Aop可以更加容易的進行功能擴充套件,遵循ocp開發原則

    4)建立物件預設是單例的,不需要再使用單例模式進行處理

    2、SpringMVC與Struts :

    1)兩者有個共同之處,那就是兩者都資料javaweb層的開發框架,都是mvc模式的的經典產品,都實現了頁面分離控制的功能,但是兩者之間是有區別的。

    2)在開發中,人們更願意使用SpringMVC而不是Struts。因為SpringMVC分離了控制器、模型物件、分派器以及處理程式物件的角色,這種分離讓它們更容易進行定製。在擴充套件和靈活性上更勝一籌。

    3)Struts的優勢在於靜態注入,外掛機制和攔截器鏈,但是struts存在漏洞,經常會被作為攻擊點進行衝擊。相比更加安全簡單的SpringMVC,開發者漸漸開發放棄了它。

    3、Hibernate 與MyBatis:

    1)Hibernate與Mybatis都是流行的持久層開發框架,一句話概括:MyBatis 簡單易上手;

    2)hibernate成熟,市場推廣率高。

    3)MyBatis可以進行更為細緻的SQL最佳化,可以減少查詢欄位。

    4)MyBatis容易掌握,而Hibernate門檻較高。

    5)更重要的是,mybatis提供了對應各種用途、功能的外掛,而hibernate在這一方面是遠遠比不上mybatis的。

    6)Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果對映。

    7)Hibernate對物件的維護和快取要比MyBatis好,對增刪改查的物件的維護要方便。

    8)Hibernate資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。

    9)Hibernate有更好的二級快取機制,可以使用第三方快取。MyBatis本身提供的快取機制不佳。

    10)但是hibernat缺點很明確,如果涉及到多張關聯表的呼叫時:

    1. 多表關聯等比較複雜,使用的成本並不低;

    2. 效率比較低,在大型專案中很少會使用到它,因為sql都是自動生成的,不太好進行人工的最佳化。

  • 2 # 碼客西

    一、SSH是Struts、Hibernate和Spring的整合框架

    是目前較流行的一種JAVA Web應用程式開源框架。

    Struts是一個基於Sun J2EE平臺的MVC框架,Struts把Servlet、JSP、自定義標籤和資訊資源(message resources)整合到一個統一的框架中,這樣,開發人員不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是MVC模式的一個具體實現,一個非常不錯的應用框架。

    Spring使用基本的實體JavaBean來完成以前只能用EJB完成的事情,是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架。透過依賴注入的方式,由spring管理和控制物件之間的依賴關係,避免硬編碼所造成的過度程式耦合,極大的降低元件之間的耦合度,實現了軟體各層之間的解耦。沒有Spring,Struts和Hibernate可以很好的執行,但是有了Spring,Struts和Hibernate能夠更好的結合在一起,協調的工作。

    SSH不僅實現了檢視、控制器與模型的徹底分離,而且還實現了業務邏輯層與持久層的分離,耦合度降低,系統的靈活性更好,可複用性高。同時,框架為我們提供了一些基礎性的服務,使我們的開發更加簡單,大大提高開發效率。

    Hibernate負責跟資料庫的交接。它對JDBC進行了非常輕量級的物件封裝,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。

    SSH不僅實現了檢視、控制器與模型的徹底分離,而且還實現了業務邏輯層與持久層的分離,耦合度降低,系統的靈活性更好,可複用性高。同時,框架為我們提供了一些基礎性的服務,使我們的開發更加簡單,大大提高開發效率。

    二、SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。

    SpringMVC相當於SSH框架中struts。

    MyBatis是一個基於Java的持久層框架,用來管理資料庫增刪改查。MyBatis使用簡單的XML或註解用於配置和原始對映,將介面和Java的POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。

    SSM是繼SSH之後,目前比較主流的Java EE企業級框架,適用於搭建各種大型的企業級應用系統。

    三、SSM與SSH之間的區別

    都用到了sping,其次Struts被替換成springMVC,hibernate替換成了MyBatis。

    1. SpringMVC與Struts

    struts是基於類開發,而springmvc是基於類中的方法開發,在配置過程中springMVC相對於要簡單,springmvc使用更加簡潔。

    2.MyBatis與hibernate

    hibernate開發中,sql語句已經被封裝,不需要寫sql語句,直接可以使用,加快系統開發。Mybatis 屬於半自動化,sql需要手工完成,有更多的個人發揮機會,稍微繁瑣。但封裝了並不一定好,如果對於龐大複雜的系統專案來說,複雜語句較多,選擇hibernate 就不是一個好方案。自己手動編寫sql,可以避免不需要的查詢,提高系統性能,另外,出現問題查錯也比hibernate容易。所以說MyBatis簡單,方便,而hibernate比較複雜,強大。

    總結:兩個框架各有各的優勢,並不能說哪個框架就一定比哪個好,要根據專案來進行選擇。在2013年6月底釋出的Struts 2.3.15版本被曝出存在重要的安全漏洞 :1.可遠端執行伺服器指令碼程式碼 2.重定向漏洞

    現在用的更多的是SSM框架,一朝被蛇咬,十年怕草繩,Struts升級之後也可以解決漏洞問題。

  • 中秋節和大豐收的關聯?
  • 越罵越勇,內馬爾再次奉獻絕殺,他還能挽回大巴黎球迷的心嗎?