以下文字和架構(gòu)圖均在本人相關(guān)系統(tǒng)
設(shè)計(jì)
和架構(gòu)方案中有所應(yīng)用。
?
原文出處:http://space.itpub.net/6517/viewspace-609654
1.Spring 架構(gòu)圖
? Spring 是一個(gè) 開源 框架,是為了解決 企業(yè) 應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的。框架的主要優(yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個(gè)組件,同時(shí)為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。 Spring 框架的功能可以用在任何 J2EE 服務(wù)器中,大多數(shù)功能也適用于不受 管理 的環(huán)境。 Spring 的核心要點(diǎn)是:支持不綁定到特定 J2EE 服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對(duì)象。這樣的對(duì)象可以在不同 J2EE 環(huán)境( Web 或 EJB )、獨(dú)立應(yīng)用程序、 測(cè)試 環(huán)境之間重用。
組成 Spring 框架的每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。每個(gè)模塊的功能如下:
- 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory ,它是工廠模式的實(shí)現(xiàn)。 BeanFactory 使用控制反轉(zhuǎn) ( IOC ) 模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序 代碼 分開。
- Spring 上下文: Spring 上下文是一個(gè)配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企業(yè)服務(wù),例如 JNDI 、 EJB 、電子郵件、國(guó)際化、校驗(yàn)和調(diào)度功能。
- Spring AOP : 通過配置管理特性, Spring AOP 模塊直接將面向方面的 編程 功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對(duì)象支持 AOP 。 Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。通過使用 Spring AOP ,不用依賴 EJB 組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。
- Spring DAO : JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同 數(shù)據(jù)庫(kù) 供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫 的異常代碼數(shù)量(例如打開和關(guān)閉連接)。 Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。
- Spring ORM : Spring 框架插入了若干個(gè) ORM 框架,從而提供了 ORM 的對(duì)象關(guān)系工具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map 。所有這些都遵從 Spring 的通用事務(wù)和 DAO 異常層次結(jié)構(gòu)。
?
2.ibatis 架構(gòu)圖
ibatis 是一個(gè)基于 Java 的持久層框架。 iBATIS 提供的持久層框架包括 SQL Maps 和 Data Access Objects ( DAO ),同時(shí)還提供一個(gè)利用這個(gè)框架開發(fā)的 JPetStore 實(shí)例。
IBATIS :最大的優(yōu)點(diǎn)是可以有效的控制 sql 發(fā)送的數(shù)目,提高數(shù)據(jù)層的執(zhí)行效率!它需要程序員自己去寫 sql 語(yǔ)句,不象 hibernate 那樣是完全面向?qū)ο蟮模詣?dòng)化的, ibatis 是半自動(dòng)化的,通過表和對(duì)象的映射以及手工書寫的 sql 語(yǔ)句,能夠?qū)崿F(xiàn)比 hibernate 等更高的查詢效率。
Ibatis 只是封裝了數(shù)據(jù)訪問層,替我們做了部分的對(duì)象關(guān)系映射。但代價(jià)是必須要寫 xml 配置文件,相對(duì)于 Hibernate 還要寫很多 sql 。 Hibernate 通過工具直接從數(shù)據(jù)庫(kù)模式生成實(shí)體類和基本的配置文件,而且大部分情況下不需要我們寫 sql ,會(huì)較大的提升開發(fā)效率。但這些也有很多的局限性,尤其是對(duì)環(huán)境的要求較高(數(shù)據(jù)庫(kù)設(shè)計(jì),對(duì)象設(shè)計(jì),團(tuán)隊(duì)的協(xié)作等)。 個(gè)人感覺 Ibatis 對(duì)項(xiàng)目比較有意義的地方在于它小巧靈活,可擴(kuò)展,封裝了數(shù)據(jù)訪問層(事務(wù),緩存,異常,日志),并提供了 DAO 框架支持。
利用 Ibatis 我們可以做到代碼和 sql 的分離,只要 sql 能夠解決的問題, Ibatis 就能幫我們較容易的解決,同時(shí)也使我們的項(xiàng)目對(duì)某一框架的依賴性變小(因?yàn)? Ibatis 是非侵入性的)。這將極大的降低項(xiàng)目風(fēng)險(xiǎn),減少解決復(fù)雜問題的時(shí)間,使項(xiàng)目的維護(hù)變得簡(jiǎn)單。
Ibatis 對(duì)于應(yīng)用的修改,調(diào)試,擴(kuò)充和維護(hù)將會(huì)變得容易自然。修改時(shí),我們主要修改的是代表模型的實(shí)體對(duì)象, xml 配置文件中的 sql ,和 / 或配置文件的 ResultMap (很多時(shí)候是不需要的)。同時(shí), sql 和代碼分離,我們不用在代碼的 StringBuffer 的 append 方法之間尋找需要修改的 sql 。配置文件中的 sql 便利了我們的調(diào)試和對(duì) sql 的評(píng)審及以后的 sql 重用。
?
3.structs1 架構(gòu)圖
Struts 是 Apache 基金會(huì) Jakarta 項(xiàng)目組的一個(gè) Open Source 項(xiàng)目,它采用 MVC 模式,能夠很好地幫助 java 開發(fā)者利用 J2EE 開發(fā) Web 應(yīng)用。和其他的 java 架構(gòu)一樣, Struts 也是面向?qū)ο笤O(shè)計(jì),將 MVC 模式 " 分離顯示邏輯和業(yè)務(wù)邏輯 " 的能力發(fā)揮得淋漓盡致。 Structs 框架的核心是一個(gè)彈性的控制層,基于如 Java Servlets , JavaBeans , ResourceBundles 與 XML 等標(biāo)準(zhǔn) 技術(shù) ,以及 Jakarta Commons 的一些類庫(kù)。 Struts 有一組相互協(xié)作的類(組件)、 Serlvet 以及 jsp tag lib 組成。基于 struts 構(gòu)架的 web 應(yīng)用程序基本上符合 JSP Model2 的設(shè)計(jì)標(biāo)準(zhǔn),可以說是一個(gè)傳統(tǒng) MVC 設(shè)計(jì)模式的一種變化類型。
Struts 有其自己的控制器( Controller ),同時(shí)整合了其他的一些技術(shù)去實(shí)現(xiàn)模型層( Model )和視圖層( View )。在模型層, Struts 可以很容易的與數(shù)據(jù)訪問技術(shù)相結(jié)合,如 JDBC / EJB ,以及其它第三方類庫(kù),如 Hibernate / iBATIS ,或者 Object Relational Bridge( 對(duì)象關(guān)系橋 ) 。在視圖層, Struts 能夠與 JSP ,包括 JSTL 與 JSF ,以及 Velocity 模板, XSLT 與其它表示層技術(shù)。
Struts 為每個(gè)專業(yè)的 Web 應(yīng)用程序做背后的支撐,幫助為你的應(yīng)用創(chuàng)建一個(gè)擴(kuò)展的開發(fā)環(huán)境。
? ? Client browser (客戶瀏覽器)
來自客戶瀏覽器的每個(gè) HTTP 請(qǐng)求創(chuàng)建一個(gè)事件。 Web 容器將用一個(gè) HTTP 響應(yīng)作出響應(yīng)。
? ? Controller (控制器)
控制器接收來自瀏覽器的請(qǐng)求,并決定將這個(gè)請(qǐng)求發(fā)往何處。就 Struts 而言,控制器是以 servlet 實(shí)現(xiàn)的一個(gè)命令設(shè)計(jì)模式。 struts-config.xml 文件配置控制器。
? ? 業(yè)務(wù)邏輯
業(yè)務(wù)邏輯更新模型的狀態(tài),并幫助控制應(yīng)用程序的流程。就 Struts 而言,這是通過作為實(shí)際業(yè)務(wù)邏輯 “ 瘦 ” 包裝的 Action 類完成的。
? ? Model (模型)的狀態(tài)
模型表示應(yīng)用程序的狀態(tài)。業(yè)務(wù)對(duì)象更新應(yīng)用程序的狀態(tài)。 ActionForm. bean 在會(huì)話級(jí)或請(qǐng)求級(jí)表示模型的狀態(tài),而不是在持久級(jí)。 JSP 文件使用 JSP 標(biāo)記讀取來自 ActionForm. bean 的信息。
? ? View (視圖)
視圖就是一個(gè) JSP 文件。其中沒有流程邏輯,沒有業(yè)務(wù)邏輯,也沒有模型信息 -- 只有標(biāo)記。標(biāo)記是使 Struts 有別于其他框架(如 Velocity )的因素之一
?
4.structs2 架構(gòu)圖
Struts 2 相對(duì)于 Struts 1.X ,將實(shí)現(xiàn)用戶業(yè)務(wù)邏輯( Action )同 Servlet API 分離開,這種分離機(jī)制,是采用了攔截器或者攔截器棧(攔截器鏈)。攔截器是 Struts 2 的核心內(nèi)容之一。
Struts 2
內(nèi)建了多個(gè)攔截器和攔截器棧(由多個(gè)攔截器形成的攔截器鏈),將用戶的
Web
請(qǐng)求進(jìn)行攔截處理,從而提供了更加豐富的功能,例如數(shù)據(jù)類型轉(zhuǎn)換、國(guó)際化、
文件上傳
等。
<!-- [if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:362.25pt;height:336.75pt'><v:imagedata src="file:///C:\Users\bq_wang\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png" o:title=""/></v:shape><![endif]--><!-- [if !vml]-->
?
?
5.Hibernate 架構(gòu)圖
Hibernate 是一個(gè)開放 源代碼 的對(duì)象關(guān)系映射框架,它對(duì) JDBC 進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得 Java 程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫(kù)。 Hibernate 可以應(yīng)用在任何使用 JDBC 的場(chǎng)合,既可以在 Java 的客戶端程序使用,也可以在 Servlet/JSP 的 Web 應(yīng)用中使用,最具革命 意義的是, Hibernate 可以在應(yīng)用 EJB 的 J2EE 架構(gòu)中取代 CMP ,完成數(shù)據(jù)持久化的重任。
?
Hibernate 的核心接口一共有 5 個(gè),分別為 :Session 、 SessionFactory 、 Transaction 、 Query 和 Configuration 。這 5 個(gè)核心接口在任何開發(fā)中都會(huì)用到。通過這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這五個(gè)核心接口分別加以介紹。
·Session 接口 :Session 接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的 CRUD 操作 (CRUD 的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見的 SQL 語(yǔ)句。 ) 。但需要注意的是 Session 對(duì)象是非線程安全的。同時(shí), Hibernate 的 session 不同于 JSP 應(yīng)用中的 HttpSession 。這里當(dāng)使用 session 這個(gè)術(shù)語(yǔ)時(shí),其實(shí)指的是 Hibernate 中的 session ,而 以后會(huì)將 HttpSesion 對(duì)象稱為用戶 session 。
·SessionFactory 接口 :SessionFactory 接口負(fù)責(zé)初 始化 Hibernate 。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建 Session 對(duì)象。這里用到了工廠模式。需要注意的是 SessionFactory 并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè) SessionFactory 就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè) SessionFactory 。
·Configuration 接口 :Configuration 接口負(fù)責(zé)配置并啟動(dòng) Hibernate ,創(chuàng)建 SessionFactory 對(duì)象。在 Hibernate 的啟動(dòng)的過程中, Configuration 類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建 SessionFactory 對(duì)象。
·Transaction 接口 :Transaction 接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開發(fā)人員也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。
·Query 和 Criteria 接口 :Query 和 Criteria 接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢。它可以使用 HQL 語(yǔ)言或 SQL 語(yǔ)句兩種表達(dá)方式。
?
6.J2EE 架構(gòu)圖
J2EE 是一套全然不同于傳統(tǒng)應(yīng)用開發(fā)的技術(shù)架構(gòu),包含許多組件,主要可簡(jiǎn)化且規(guī)范應(yīng)用系統(tǒng)的開發(fā)與部署,進(jìn)而提高可移植性、安全與再用價(jià)值。
J2EE 核心是一組技術(shù)規(guī)范與指南,其中所包含的各類組件、服務(wù)架構(gòu)及技術(shù)層次,均有共通的標(biāo)準(zhǔn)及規(guī)格,讓各種依循 J2EE 架構(gòu)的不同平臺(tái)之間,存在良好的兼容性,解決過去企業(yè)后端使用的信息產(chǎn)品彼此之間無(wú)法兼容,導(dǎo)致企業(yè)內(nèi)部或外部難以互通的窘境。
?
?
7.Oracle 架構(gòu)圖
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
