J2EE領域的一些技術框架結構圖

Web開發者發表於2012-07-19

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架構圖

相關文章