Java框架一直以來都是面試必備的知識點,而掌握Java框架,無論在成熟的大公司,快速發展的公司,仍是創業階段的公司,都能對當前正在開發中的系統有總體的認知,從而更好的熟悉和學習技術,這篇文章胖達就打算給你們介紹幾款現階段流行的框架組合,不論是在傳統企業開發仍是在互聯網開發領域,這幾種框架應該都是比較經常使用的。面試
說到框架首先須要明確的是,在Web開發領域通常會將架構分爲三個部分:表示層、持久層、業務層,之因此將總體架構分爲三個層面,主要目的是讓整個系統更具備條理性,經過分配任務的方式進行系統的解耦,讓每一層只關心本身內部的事情,只知道下層的存在,不知道上層的存在。達到局部改變而不影響全局的目的,就好比餐館中有服務員、廚師、收銀員同樣,各司其職,讓系統有條不紊的運行下去。三層架構以下圖所示(圖中的數據訪問層就是文中的持久層):
sql
下面就簡單介紹一下三層架構:數據庫
1.表示層設計模式
表示層其實就是用戶可以看到的界面顯示層,可是它的職責並不只僅是顯示界面那麼簡單,而是須要完成三件事情:安全
從界面中取得數據跟後臺服務器交互服務器
跟後臺交互後進行數據綁定架構
將綁定的數據呈如今頁面中框架
通常來講,這一層的設計會採用MVC的模式,M稱爲模型也就是實體類,用於數據的封裝和數據的傳輸;V爲視圖也就是頁面組件,用於數據的展現;C爲控制也就是流程事件,用於流程的控制。學習
2.業務層設計
這一層的功能主要是實現一些具體問題的操做,由於它是表示層和持久層之間溝通的橋樑,主要負責數據的傳遞和處理。
在平常的代碼開發中通常對應着邏輯Service層,對於一些複雜的邏輯判斷和涉及到數據庫的數據驗證都須要在這一層作出處理,同時根據傳入的值返回用戶想獲得的值,或者處理相關的操做。
3.持久層
也稱爲數據訪問層,顧名思義,這一層其實就是跟數據庫直接打交道的層面,經過鏈接數據庫,根據傳入的值對數據庫進行增刪改查。
針對上面架構的每個層面,目前Web開發領域內都有一些優秀的框架,例如表示層有Structs二、SpringMVC等,持久層有Hibernate、Mybatis等,還有業務層有Spring框架,可是嚴格來講,Spring是一個整合框架,業務層面在每個公司每個項目都會根據本身的需求作不一樣的處理。在項目的開發中,有這樣幾種使用很是普遍的框架組合:
1.SSH框架組合
SSH框架組合主要包括Struts 、Spring、Hibernate三大框架,用Struts做爲系統的總體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對持久層提供支持,同時用Spring來管理Struts和Hibernate,框架具體解釋以下:
Struts框架是一個基於MVC設計模式的Web應用框架,它本質上至關於一個Servlet,在MVC設計模式中,Struts2做爲控制器(Controller)來創建模型與視圖的數據交互。
它包含Struts1和Struts2兩個版本,二者的相差其實仍是挺大的,Struts2並非對Struts1的更新,而是充分發揮了Struts1和WebWork這兩種技術的優點,它拋棄了原來Struts1的缺點,使得Web開發變得更加容易。
學習基礎的時候你們應該都知道,最傳統的Java Web應用程序是採用JSP、Servlet、Javabean來實現的,這種模式實現了最基本的MVC分層,使的程序結構有負責前臺展現的 JSP、負責流程邏輯控制的Servlet以及負責數據封裝的Javabean,可是這種結構存在問題如JSP頁面中須要使用符號嵌入不少的 Java代碼,形成頁面結構混亂,Servlet和Javabean負責了大量的跳轉和運算工做,耦合緊密,程序複用度低等。
Spring框架的出現就解決了這個問題,經過AOP和IOC兩大特性的加持,把全部類之間的這種依賴關係徹底經過配置文件的方式替代了,同時將實體bean很好的管理到了容器中,使得耦合性大大下降,複用性大大提升。
傳統的持久層框架都是採用Java JDBC的鏈接方式進行數據庫的訪問和操做,須要人爲的編寫大量的SQL或者代碼,同時還須要將得到的數據進行轉換或封裝後往外傳,其實對於大項目而言這是一個很是煩瑣的過程。
Hibernate框架是一個半自動化的持久層框架,能夠減小大量的SQL、代碼編寫工做,省掉很大部分的工做量,在這個框架中,當咱們須要相關操做時,不用再關注數據庫表也不用再去一行行的查詢數據庫,只須要經過持久化一個類的方式就能夠完成增刪改查的功能,由於框架的內部已經實現了不少對數據庫的操做方法,咱們只須要調用便可,作的最多的工做都在持久化類上。
2.SSM框架組合
另一個比較流行的框架組合是SSM框架,主要包括SpringMVC、Spring、Mybatis三大框架,用SpringMVC做爲總體基礎框架,分離MVC層級,Mybatis做爲跟數據庫交互的持久層框架,負責數據的訪問和操做,而Spring依然做爲其他兩大框架的橋樑,進行數據的傳遞和事務等邏輯處理,下面Spring再也不贅述,關於SpringMVC、Mybatis詳情以下所述:
SpringMVC和Struts2都屬於表現層的框架,但它是Spring框架的一部分,這讓SpringMVC有了先天的優點,它延續了Spring在配置上簡單省心的特色,並且由於與Spring無縫對接,這讓安全性有了很大的保障。同時SpringMVC解決了一個很大的問題就是如何下降處理業務數據的對象和顯示業務數據的視圖耦合性,這個問題的解決讓開發變得更加的簡單。
MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射, 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集的繁雜。它可使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java對象映射成數據庫中的記錄。
Hibernate當然優秀,可是跟Mybatis相比,它的封裝太過於死板,對一些複雜的sql,開發人員更喜歡手動的編寫一些代碼,而不是經過特定的HQL語言去編寫,這樣會間接的增長工做量,並且Mybatis更好上手,學習成本比Hibernate要低不少,可是有一點不得不認可,Hibernate的開源社區人數要碾壓Mybatis的,畢竟國外不少大佬仍是喜歡用Hibernate的,後期能夠詳細探索探索。
不管如何,學好框架都對咱們有很大的幫助,在這篇文章胖達只是簡單介紹了一下框架的三層架構以及兩個流行的框架組合,後面的文章中我會分別對一些框架進行詳細的介紹,若是有機會,也會將框架整合的過程記錄下來跟你們分享,但願你們都能在個人文章中有所收穫,也但願本身可以堅持技術分享,跟你們一塊兒成長。