ssh架構原理

轉載在:http://blog.csdn.net/libochun3217/article/details/8627806

truts2架構圖

1、 當瀏覽器向servlet容器(例如tomcat)發出一個請求(HttpServletRequest)後這個請求首先經過一系列過濾器最終被FilterDispatcher類接收

2、 接着FilterDispatcher訪問ActionMapper類來決定是否調用某個action

3、 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy

4、 ActionProxy通過ConfigurationManager訪問框架的配置文件struts.xml,找到需要調用的Action類

5、 ActionProxy創建一個ActionInvocation使用命名模式來調用Action,在調用Action前後涉及多個攔截器的調用

6、 一旦Action執行完,ActionInvocation根據struts.xml配置文件找到相應返回結果,通常是jsp等表現頁面


組成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 和iBatis SQL Map 。所有這些都遵從Spring 的通用事務和DAO 異常層次結構。

 

.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 語句兩種表達方式。




ibatis 架構圖

ibatis 是一個基於 Java 的持久層框架。 iBATIS 提供的持久層框架包括 SQL Maps 和 Data Access Objects ( DAO ),同時還提供一個利用這個框架開發的 JPetStore 實例。

 ITPUB個人空間ClH8F&O

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 重用。

發佈了26 篇原創文章 · 獲贊 23 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章