• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Struts+hibernate框架的研究

      2009-03-30 04:52:54
      新媒體研究 2009年3期

      劉 明

      [摘要]要開發(fā)現(xiàn)實(shí)世界的應(yīng)用程序,特別是大規(guī)模的企業(yè)Web應(yīng)用程序,開發(fā)人員必然會發(fā)現(xiàn)他們必須創(chuàng)建某種框架。J2EE提供針對Web的基本平臺,在經(jīng)典的J2EE四層體系結(jié)構(gòu)的基礎(chǔ)上增加數(shù)據(jù)持久層,提出基于J2EB五層體系結(jié)構(gòu)的web開發(fā)框架;分析基于Struts框架的J2EE架構(gòu)中實(shí)現(xiàn)對象持久性的局限性,從中分離出對象持久層,并將Hibernate這個面向?qū)ο蟮妮p量級對象持久性技術(shù)集成到該架構(gòu)。

      [關(guān)鍵詞]struts hibernate web j2EE

      中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1571—7597(2009)0210063-01

      一、集成Struts框架與Hibernate框架實(shí)現(xiàn)MVC設(shè)計模式

      Struts作為基于模型視圖控制器模式的應(yīng)用架構(gòu),具有組件的模塊化、靈活性和重用性的優(yōu)點(diǎn)。但是Struts框架主要是針對表示層設(shè)計的,對于后端的業(yè)務(wù)邏輯層支持不是很強(qiáng),在進(jìn)行項(xiàng)目開發(fā)中存在以下局限:

      1.只能橫向分工,按模塊來劃分工作,軟件開發(fā)成本相應(yīng)較高:

      2.需要花很多時間在數(shù)據(jù)層的包裝以及不同模塊之間進(jìn)行協(xié)調(diào)和溝通,導(dǎo)致開發(fā)時間的增加:

      3.項(xiàng)目移植性相對較差,可能需要為不同數(shù)據(jù)庫編寫不同的SQL語句;

      4.項(xiàng)目擴(kuò)展性相對較差,適應(yīng)新的需求或變更時要修改數(shù)據(jù)庫表結(jié)構(gòu)、重新編寫SOL語句、備份數(shù)據(jù)庫等,對人員要求也相應(yīng)較高;

      5.由于開發(fā)人員數(shù)據(jù)庫操作水平參差不齊,開發(fā)經(jīng)驗(yàn)也不盡相同,導(dǎo)致系統(tǒng)性能可能會相對較差。

      Hibernate是一個開放源代碼的O/R mapping(對象/關(guān)系映射)框架,它對JDBc進(jìn)行了輕量級的對象封裝,以面向?qū)ο髾C(jī)制來處理數(shù)據(jù)庫操作。Hibernate不僅管理Java類到數(shù)據(jù)庫表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,大幅度減少開發(fā)時人工使用SQL和JDBC處理數(shù)據(jù)的時間。因此可以將Struts中的模型層分成兩部分:一部分負(fù)責(zé)業(yè)務(wù)邏輯;另一部分使用Hibernate實(shí)現(xiàn)對象持久性處理。同時分離出具體業(yè)務(wù)邏輯,新建一個業(yè)務(wù)邏輯層,專門負(fù)責(zé)用Hibernate來實(shí)現(xiàn)業(yè)務(wù)邏輯和持久性對象的交互。圖3顯示了集成Struts和Hibernate的MVC模型。Struts和Hibernate框架的整合實(shí)現(xiàn)了控制流、業(yè)務(wù)調(diào)用、表示這三者的分離,使系統(tǒng)在開發(fā)效率、可維護(hù)性、可擴(kuò)展性方面均有良好的改進(jìn)。

      二、集成Struts和Hibe rnate實(shí)現(xiàn)J2EE分層架構(gòu)

      根據(jù)前面的分析,將Struts與Hibernate框架進(jìn)行集成,構(gòu)成了一個新的Web應(yīng)用的開發(fā)框架,實(shí)現(xiàn)了J2EE應(yīng)用系統(tǒng)的多層架構(gòu)。該框架一方面繼承Struts框架在表示層的優(yōu)點(diǎn),提供完善的標(biāo)記庫,負(fù)責(zé)頁面請求的接收和轉(zhuǎn)發(fā),實(shí)現(xiàn)了表示邏輯和業(yè)務(wù)邏輯的分離;另一方面在數(shù)據(jù)持久層等方面發(fā)揮Hibernate框架的特點(diǎn),由Hibernate框架實(shí)現(xiàn)持久層和事務(wù)的封裝,使業(yè)務(wù)邏輯與數(shù)據(jù)庫訪問分開。這樣有利于開發(fā)人員將注意力集中在業(yè)務(wù)邏輯的實(shí)現(xiàn)上,有利于系統(tǒng)的可維護(hù)性等。

      集成Struts和Hibernate實(shí)現(xiàn)J2EE分層架構(gòu)如圖2所示。系統(tǒng)采用的五層結(jié)構(gòu)設(shè)計由客戶層、Web層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層、數(shù)據(jù)庫層組成??蛻魧舆\(yùn)行在用戶計算機(jī)的Web瀏覽器中;Web層運(yùn)行在Web服務(wù)器中,它使用Struts框架技術(shù)實(shí)現(xiàn),提供了接收/響應(yīng)客戶端請求,控制整個系統(tǒng)工作流程,與業(yè)務(wù)邏輯層交互以及格式化業(yè)務(wù)數(shù)據(jù)并動態(tài)生成Web頁面等功能;業(yè)務(wù)邏輯層負(fù)責(zé)實(shí)現(xiàn)整個系統(tǒng)的核心業(yè)務(wù)邏輯,由JavaBeans或EJB來實(shí)現(xiàn);數(shù)據(jù)持久層使用Hibernate框架技術(shù)實(shí)現(xiàn),完成對象和關(guān)系的映射,負(fù)責(zé)對數(shù)據(jù)庫進(jìn)行操作。

      下面根據(jù)圖4對系統(tǒng)的各分層功能進(jìn)行簡單分析:

      1.客戶層。它是用戶用瀏覽器看到并直接與系統(tǒng)交互的層,主要是由HTML語言形成的網(wǎng)頁界面。

      2.Web層。它從客戶層獲得客戶的輸入,傳遞給業(yè)務(wù)邏輯層的組件,再將從業(yè)務(wù)邏輯層獲得的處理結(jié)果以HTML文件的形式輸出到客戶端,形成網(wǎng)頁界面。Web層由Servlet和JSP程序組成,封裝在Web容器中。業(yè)務(wù)流程控制一般均由控制器Servlet來開發(fā),響應(yīng)用戶的查詢等請求并調(diào)用業(yè)務(wù)邏輯層的JavaBean來實(shí)現(xiàn)復(fù)雜的商務(wù)邏輯。

      3.業(yè)務(wù)邏輯層。處理表示邏輯層傳遞過來的用戶響應(yīng),并將結(jié)果返回給客戶層。業(yè)務(wù)邏輯層封裝了系統(tǒng)提供給用戶的接口,是直接處理用戶請求的中心。這一層主要由JavaBean來實(shí)現(xiàn)。JavaBean的主要任務(wù)是處理商務(wù)邏輯,與客戶端交互,返回給它相應(yīng)的操作結(jié)果等。

      4.?dāng)?shù)據(jù)持久層。它完成持久對象到關(guān)系數(shù)據(jù)庫的映射,并對持久對象進(jìn)行操作。業(yè)務(wù)邏輯模塊由Hibernate通過O/R映射文件實(shí)現(xiàn)對具體數(shù)據(jù)源的操作(即穿過持久層映射到具體的某個數(shù)據(jù)表),完成對數(shù)據(jù)庫的操作。對于小型的項(xiàng)目來說,這種實(shí)現(xiàn)確實(shí)是很高效且低成本的。

      5.?dāng)?shù)據(jù)庫層。對象持久性的具體實(shí)現(xiàn),可以是關(guān)系數(shù)據(jù)庫管理系統(tǒng)、文件存儲和對象數(shù)據(jù)庫存儲管理系統(tǒng)。

      三、結(jié)束語

      本文在傳統(tǒng)的J2EE框架中引入面向?qū)ο髾C(jī)制的數(shù)據(jù)持久層,使業(yè)務(wù)邏輯處理層有效地分離和隱藏了數(shù)據(jù)讀取和操縱中的所有數(shù)據(jù)訪問代碼細(xì)節(jié),將客戶應(yīng)用程序和底層存儲機(jī)制隔離開,完全抽象出開發(fā)應(yīng)用程序時使用的數(shù)據(jù)物理細(xì)節(jié),構(gòu)建了更為有效的松耦合多層次web開發(fā)模型。

      作者簡介:

      劉明,女,漢族,遼寧省朝陽市人,大連交通大學(xué)軟件工程在讀碩士,朝陽師范高等??茖W(xué)校數(shù)計系助教,研究方向:javaweb開發(fā)。

      清原| 个旧市| 蒲江县| 缙云县| 桂平市| 平湖市| 嘉兴市| 黄山市| 益阳市| 临江市| 巴塘县| 崇义县| 松桃| 平罗县| 德昌县| 田阳县| 新和县| 曲水县| 淳安县| 新兴县| 桂林市| 金坛市| 腾冲县| 乌恰县| 灌南县| 深州市| 上饶市| 黑山县| 宣汉县| 庆元县| 兴山县| 承德市| 临泉县| 铜鼓县| 岫岩| 凌源市| 华坪县| 台江县| 海原县| 广丰县| 祁连县|