1.Spring
架構圖
Spring 是一個開源 框架,是爲了解決企業應用程序開發複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許您選擇使用哪個組件,同時爲J2EE 應用程序開發提供集成的框架。Spring 框架的功能能夠用在任何J2EE 服務器中,大多數功能也適用於不受管理的環境。Spring 的核心要點是:支持不綁定到特定J2EE 服務的可重用業務和數據訪問對象。這樣的對象能夠在不一樣J2EE 環境(Web或EJB )、獨立應用程序、測試環境之間重用。
組成Spring 框架的每一個模塊(或組件)均可以單獨存在,或者與其餘一個或多個模塊聯合實現。每一個模塊的功能以下:
核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要組件是BeanFactory ,它是工廠模式的實現。BeanFactory 使用控制反轉(IOC ) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。
Spring 上下文:Spring 上下文是一個配置文件,向Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如JNDI 、EJB、電子郵件、國際化、校驗和調度功能。
Spring AOP : 經過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了Spring 框架中。因此,能夠很容易地使Spring 框架管理的任何對象支持AOP 。Spring AOP 模塊爲基於Spring 的應用程序中的對象提供了事務管理服務。經過使用Spring AOP ,不用依賴EJB 組件,就能夠將聲明性事務管理集成到應用程序中。
Spring DAO :JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不一樣數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,而且極大地下降了須要編寫的異常代碼數量(例如打開和關閉鏈接)。Spring DAO 的面向JDBC 的異常聽從通用的DAO 異常層次結構。
Spring ORM :Spring 框架插入了若干個ORM 框架,從而提供了ORM 的對象關係工具,其中包括JDO 、Hibernate 和iBatisSQLMap 。全部這些都聽從Spring 的通用事務和DAO 異常層次結構。
2.ibatis
架構圖
ibatis 是一個基於 Java 的持久層框架。 iBATIS 提供的持久層框架包括 SQL Maps 和DataAccess Objects ( DAO ),同時還提供一個利用這個框架開發的 JPetStore 實例。
IBATIS :最大的優勢是能夠有效的控制sql 發送的數目,提升數據層的執行效率!它須要程序員本身去寫sql 語句,不象hibernate那樣是徹底面向對象的,自動化的,ibatis 是半自動化的,經過表和對象的映射以及手工書寫的sql 語句,可以實現比hibernate 等更高的查詢效率。
Ibatis 只是封裝了數據訪問層,替咱們作了部分的對象關係映射。但代價是必需要寫xml配置文件,相對於Hibernate 還要寫不少sql 。Hibernate 經過工具直接從數據庫模式生成實體類和基本的配置文件,並且大部分狀況下不須要咱們寫sql ,會較大的提高開發效率。但這些也有不少的侷限性,尤爲是對環境的要求較高(數據庫設計,對象設計,團隊的協做等)。我的感受Ibatis 對項目比較有意義的地方在於它小巧靈活,可擴展,封裝了數據訪問層(事務,緩存,異常,日誌),並提供了DAO 框架支持。
利用Ibatis 咱們能夠作到代碼和sql 的分離,只要sql 可以解決的問題,Ibatis 就能幫咱們較容易的解決,同時也使咱們的項目對某一框架的依賴性變小(由於Ibatis 是非侵入性的)。這將極大的下降項目風險,減小解決複雜問題的時間,使項目的維護變得簡單。
Ibatis 對於應用的修改,調試,擴充和維護將會變得容易天然。修改時,咱們主要修改的是表明模型的實體對象,xml 配置文件中的sql ,和/ 或配置文件的ResultMap (不少時候是不須要的)。同時,sql 和代碼分離,咱們不用在代碼的StringBuffer 的append 方法之間尋找須要修改的sql 。配置文件中的sql 便利了咱們的調試和對sql 的評審及之後的sql 重用。
3.struts1
架構圖
Struts 是Apache 基金會Jakarta 項目組的一個Open Source 項目,它採用MVC 模式,可以很好地幫助java 開發者利用J2EE 開發Web 應用。和其餘的java 架構同樣,Struts 也是面向對象設計,將MVC 模式" 分離顯示邏輯和業務邏輯" 的能力發揮得淋漓盡致。Structs 框架的核心是一個彈性的控制層,基於如Java Servlets ,JavaBeans ,ResourceBundles 與XML 等標準技術,以及Jakarta Commons 的一些類庫。Struts 有一組相互協做的類(組件)、Serlvet 以及jsptag lib 組成。基於struts 構架的web 應用程序基本上符合JSP Model2 的設計標準,能夠說是一個傳統MVC 設計模式的一種變化類型。
Struts 有其本身的控制器(Controller ),同時整合了其餘的一些技術去實現模型層(Model )和視圖層(View )。在模型層,Struts 能夠很容易的與數據訪問技術相結合,如JDBC / EJB ,以及其它第三方類庫,如Hibernate / iBATIS ,或者Object Relational Bridge( 對象關係橋) 。在視圖層,Struts 可以與JSP ,包括JSTL 與JSF ,以及Velocity 模板,XSLT 與其它表示層技術。
Struts 爲每一個專業的Web 應用程序作背後的支撐,幫助爲你的應用建立一個擴展的開發環境。
Client browser (客戶瀏覽器):
來自客戶瀏覽器的每一個HTTP 請求建立一個事件。Web 容器將返回一個HTTP Response。
Controller (控制器):
控制器接收來自瀏覽器的請求,並決定將這個請求發往何處。就Struts 而言,控制器是以servlet 實現的一個命令設計模式。struts-config.xml 文件配置控制器。
Logic 業務邏輯:
業務邏輯更新模型的狀態,並幫助控制應用程序的流程。就Struts 而言,這是經過做爲實際業務邏輯「 瘦」 包裝的Action 類完成的。
Model (模型)的狀態:
模型表示應用程序的狀態。業務對象更新應用程序的狀態。ActionForm. bean 在會話級或請求級表示模型的狀態,而不是在持久級。
View (視圖):
視圖就是一個JSP 文件。其中沒有流程邏輯,沒有業務邏輯,也沒有模型信息,只有標記。標記是使Struts區別於其餘模板技術(如Velocity)的因素之一。
4.struts2
架構圖
Struts 2 相對於Struts 1.X ,將實現用戶業務邏輯(Action )同Servlet API 分離開,這種分離機制,是採用了攔截器或者攔截器棧(攔截器鏈)。攔截器是Struts 2 的核心內容之一。
Struts 2 內建了多個攔截器和攔截器棧(由多個攔截器造成的攔截器鏈),將用戶的Web 請求進行攔截處理,從而提供了更加豐富的功能,例如數據類型轉換、國際化、文件上傳等。
5.Hibernate
架構圖
Hibernate 是一個開放源代碼 的對象關係映射框架,它對JDBC 進行了很是輕量級的對象封裝,使得Java 程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。Hibernate 能夠應用在任何使用JDBC 的場合,既能夠在Java 的客戶端程序使用,也能夠在Servlet/JSP 的Web 應用中使用,最具革命 意義的是,Hibernate 能夠在應用EJB 的J2EE 架構中取代CMP ,完成數據持久化的重任。
Hibernate 的核心接口一共有5 個,分別爲:Session 、SessionFactory、Transaction 、Query和Configuration 。這5 個核心接口在任何開發中都會用到。經過這些接口,不只能夠對持久化對象進行存取,還可以進行事務控制。下面對這五個核心接口分別加以介紹。
·Session 接口:Session 接口負責執行被持久化對象的CRUD 操做(CRUD 的任務是完成與數據庫的交流,包含了不少常見的SQL語句。) 。但須要注意的是Session 對象是非線程安全的。同時,Hibernate 的session 不一樣於JSP 應用中的HttpSession 。這裏當使用session 這個術語時,其實指的是Hibernate 中的session ,而 之後會將HttpSesion 對象稱爲用戶session 。
·SessionFactory 接口:SessionFactory 接口負責初 始化Hibernate 。它充當數據存儲源的代理,並負責建立Session 對象。這裏用到了工廠模式。須要注意的是SessionFactory 並非輕量級的,由於通常狀況下,一個項目一般只須要一個SessionFactory 就夠,當須要操做多個數據庫時,能夠爲每一個數據庫指定一個SessionFactory 。
·Configuration 接口:Configuration 接口負責配置並啓動Hibernate ,建立SessionFactory 對象。在Hibernate 的啓動的過程當中,Configuration 類的實例首先定位映射文檔位置、讀取配置,而後建立SessionFactory 對象。
·Transaction 接口:Transaction 接口負責事務相關的操做。它是可選的,開發人員也能夠設計編寫本身的底層事務處理代碼。
·Query 和Criteria 接口:Query 和Criteria 接口負責執行各類數據庫查詢。它可使用HQL 語言或SQL 語句兩種表達方式。
6.J2EE
架構圖
J2EE 是一套全然不一樣於傳統應用開發的技術架構,包含許多組件,主要可簡化且規範應用系統的開發與部署,進而提升可移植性、安全與再用價值。
J2EE 核心是一組技術規範與指南,其中所包含的各種組件、服務架構及技術層次,均有共通的標準及規格,讓各類依循J2EE 架構的不一樣平臺之間,存在良好的兼容性,解決過去企業後端使用的信息產品彼此之間沒法兼容,致使企業內部或外部難以互通的窘境。
7.Oracle
架構圖