瞭解框架——SSM

目錄

框架——framework

Spring框架:

SpringMVC:

Mybatis框架:

SpringMVC與Struts2比較:

Mybatis與Hibernate比較:


 

框架——framework

  • 框架一詞應用十分廣泛,如:土木工程、施工工藝等,在軟件工程中最爲普遍。

下面,我只說自己的理解,不高談闊論什麼可重用性、可拓展性。

框架就是工具,用於減少自己在開發工作中的工作量,簡化開發流程的一種工具。

我認爲:對框架的掌握程度,可以分爲三層:

  • 1、會使用:知道如何使用框架(就像學會一種軟件的使用方法),其實這種情況下,如果嚴格按照開發文檔進行開發,就可以參加工作了。
  • 2、懂流程:懂得一個框架的運行流程,高大上一點就是架構,懂得框架的架構,在使用框架時,按框架運行流程一步步進行開發,會很好的避免一些小錯誤,大大提高開發速度。
  • 3、看源碼:看懂源碼,理解框架功能是如何實現的,能在框架的使用上更得心應手。

 

Spring框架:

  • 主要用於管理項目中的對象的創建。可以貫穿項目的始終。如J2EE架構中,WEB層、Service層、Dao層,三層的對象全都可以交給Spring來管理。最初是由Rod Johnson編寫的,並且於2003年6月首次在Apache 2.0許可下發布。Apache音譯爲阿帕奇。
  • 使用Spring時,要在項目的主配置文件中設置啓動Spring容器。

  • Spring框架的核心包括IOC(控制反轉)和AOP(面向切面)。

IOC——控制反轉:

  • 簡單來說就是將對象的控制權(創建和銷燬)從程序員書寫的代碼交給Spring框架。

AOP——面向切面:

  • 舉個例子,現在生活中最常見的快遞,從寄件方發到收件方的手裏,中間需要經過一些快遞站點,這些站點就相當於把運送過程切斷,進行分析處理之後,再向下執行。如下圖:
  • 快遞如果直接從寄件方發到收件方,就使得每一件快遞都需要進行詳細安排,甚至設置專員,這樣非常耗費人力,物力,如果在中間加個處理中心,將發往同一大地點的快遞集中運送,到達後,在進行小地點分配運送,可以大大節約人力物力。
  • 這個例子雖然與編程開發不太一樣,但是思想都是一樣的。
  • Spring在AOP思想的應用上,最典型的就是事務控制:

  • Spring已經將事務控制的具體方式方法寫好了,使用時,只需要根據需要來配置即可。AOP編程(面向切面編程)一般是使用代理模式來實現的。

 

SpringMVC:

  • SpringMVC是Spring框架的後續產品,當然同屬於Apache公司,應用於WEB層,與Struts2的功能相同。
  • SpringMVC可以和Spring無縫整合。
  • 使用SpringMVC時,要在項目主配置文件中配置SpringMVC容器。

  • SpringMVC主要用於前臺的請求處理,包括頁面提交的參數獲取處理指定頁面回顯

SpringMVC中最重要的註解——@RequestMapping:用於設置接收請求

  • 一般用在方法上,用於指定執行該方法的請求路徑和方式,在中國,主要的請求方式只有GET和POST,西方有許多,如:UPDATE、DELETE等。請求路徑可以設置多個。
  • 還可以用在類上,用於指定該類中,方法請求路徑的前綴。

參數獲取:

  • 在方法的形參中設置要接收的參數。可以是原始的Request和Response,可以是基本數據類型,也可以是JavaBean。
  • 還可以使用SpringMVC提供的Model類型作爲參數,可以設置回顯數據。

頁面回顯:

  • ModelAndView:作爲方法的返回值類型時,可以設置回顯頁面和回顯數據。
  • String:作爲方法的返回值時,可以設置回顯頁面,但是回顯數據需要使用Model對象,Model需要在形參中聲明。
  • Void:作爲方法的返回值時,可以通過原始的Request和Response設置回顯數據和頁面,同樣需要在形參中聲明。

 

Mybatis框架:

  • 原名ibatis,爲Apache的開源項目,2010年遷移到GooGle公司,並改名爲Mybatis。2013年11月遷移到GitHub。
  • 按照J2EE架構,Mybatis是應用於DAO層的框架,與Hibernate作用相同。
  • Mybatis的主要作用就是簡化Java連接數據庫的操作。

  • 主要優點包括動態SQLMapper接口代理開發

動態SQL:

  • Mybatis不僅實現了SQL語句和Java代碼的分離,還開發了動態SQL的形式來保程序的正確運行。sql語句一般寫在XML文件中。
  • 舉個例子:當條件查詢時,往往設置多個條件,當有一個或多個條件不做限制時,如果採用原始SQL,不知道哪些條件限制或沒限制,所以要都寫上,並且要加上一個“1=1”類似的條件來保證sql語句的正確執行,而動態SQL的形式,將條件使用標籤來指定,如果有些未限制的條件,Mybatis會自動進行處理,不需要自己寫個“1=1”類似的語句。

Mapper接口代理開發:

  • Mybatis採用動態代理的形式,來代理程序員書寫的接口中的抽象方法,程序要無需知己實現這些方法,只需要按照Mapper接口的開發規範來進行配置和書寫SQL語句,Mybatis會自動幫我們實現方法的功能。

 

SpringMVC與Struts2比較:

  • 相同點:

  1. 應用於WEB層,均採用比較成熟的MVC思想;
  2. 使用時,都要配置一個入口。
  • 不同點:

  1. SpringMVC入口是前端控制器(Servlet技術);Struts2入口是核心過濾器(Filter技術)。
  2. SpringMVC是針對方法去開發的,一個方法對應一個或多個URL,並且參數是傳遞到方法形參上,可以設置爲單例或多例(建議單例);Struts2是基於類開發的,參數是傳遞到類的成員變量上,並且只能爲設置爲單例。
  3. SpringMVC在數據回執上,是將數據存儲到原始的域中,如:Request域、Session域等;而Struts2開發了值棧的概念,將數據存儲到值棧中。

 

Mybatis與Hibernate比較:

  • 相同點:

  1. 都是使用SessionFactory來管理Session對象。
  2. 都是採用關係映射的形式來管理實體和數據庫表的關係。
  3. 都是採用Java代碼與SQL語句分離
  • 不同點:

  1. Java代碼與SQL語句分離的實現方式不同:Mybatis是真正採用分離形式,SQL語句在XML中統一書寫,更偏向於簡化Java代碼;Hibernate是採用自動生成SQL語句的形式,特定API對應特定的Sql操作,更偏向於簡化SQL語句。
  2. Mybatis無需強制映射,可以採用自動映射(字段名和屬性名相同時)或手動映射;Hibernate必須進行實體Bean和表的關係映射,否則無法自動封裝數據。
  3. Hibernate有自己的緩存系統和快照;Mybatis沒有。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章