劉 明
[摘要]要開發現實世界的應用程序,特別是大規模的企業Web應用程序,開發人員必然會發現他們必須創建某種框架。J2EE提供針對Web的基本平臺,在經典的J2EE四層體系結構的基礎上增加數據持久層,提出基于J2EB五層體系結構的web開發框架;分析基于Struts框架的J2EE架構中實現對象持久性的局限性,從中分離出對象持久層,并將Hibernate這個面向對象的輕量級對象持久性技術集成到該架構。
[關鍵詞]struts hibernate web j2EE
中圖分類號:TP3文獻標識碼:A文章編號:1571—7597(2009)0210063-01
一、集成Struts框架與Hibernate框架實現MVC設計模式
Struts作為基于模型視圖控制器模式的應用架構,具有組件的模塊化、靈活性和重用性的優點。但是Struts框架主要是針對表示層設計的,對于后端的業務邏輯層支持不是很強,在進行項目開發中存在以下局限:
1.只能橫向分工,按模塊來劃分工作,軟件開發成本相應較高:
2.需要花很多時間在數據層的包裝以及不同模塊之間進行協調和溝通,導致開發時間的增加:
3.項目移植性相對較差,可能需要為不同數據庫編寫不同的SQL語句;
4.項目擴展性相對較差,適應新的需求或變更時要修改數據庫表結構、重新編寫SOL語句、備份數據庫等,對人員要求也相應較高;
5.由于開發人員數據庫操作水平參差不齊,開發經驗也不盡相同,導致系統性能可能會相對較差。
Hibernate是一個開放源代碼的O/R mapping(對象/關系映射)框架,它對JDBc進行了輕量級的對象封裝,以面向對象機制來處理數據庫操作。Hibernate不僅管理Java類到數據庫表的映射,還提供數據查詢和獲取數據的方法,大幅度減少開發時人工使用SQL和JDBC處理數據的時間。因此可以將Struts中的模型層分成兩部分:一部分負責業務邏輯;另一部分使用Hibernate實現對象持久性處理。同時分離出具體業務邏輯,新建一個業務邏輯層,專門負責用Hibernate來實現業務邏輯和持久性對象的交互。圖3顯示了集成Struts和Hibernate的MVC模型。Struts和Hibernate框架的整合實現了控制流、業務調用、表示這三者的分離,使系統在開發效率、可維護性、可擴展性方面均有良好的改進。

二、集成Struts和Hibe rnate實現J2EE分層架構
根據前面的分析,將Struts與Hibernate框架進行集成,構成了一個新的Web應用的開發框架,實現了J2EE應用系統的多層架構。該框架一方面繼承Struts框架在表示層的優點,提供完善的標記庫,負責頁面請求的接收和轉發,實現了表示邏輯和業務邏輯的分離;另一方面在數據持久層等方面發揮Hibernate框架的特點,由Hibernate框架實現持久層和事務的封裝,使業務邏輯與數據庫訪問分開。這樣有利于開發人員將注意力集中在業務邏輯的實現上,有利于系統的可維護性等。
集成Struts和Hibernate實現J2EE分層架構如圖2所示。系統采用的五層結構設計由客戶層、Web層、業務邏輯層、數據持久層、數據庫層組成。客戶層運行在用戶計算機的Web瀏覽器中;Web層運行在Web服務器中,它使用Struts框架技術實現,提供了接收/響應客戶端請求,控制整個系統工作流程,與業務邏輯層交互以及格式化業務數據并動態生成Web頁面等功能;業務邏輯層負責實現整個系統的核心業務邏輯,由JavaBeans或EJB來實現;數據持久層使用Hibernate框架技術實現,完成對象和關系的映射,負責對數據庫進行操作。
下面根據圖4對系統的各分層功能進行簡單分析:
1.客戶層。它是用戶用瀏覽器看到并直接與系統交互的層,主要是由HTML語言形成的網頁界面。
2.Web層。它從客戶層獲得客戶的輸入,傳遞給業務邏輯層的組件,再將從業務邏輯層獲得的處理結果以HTML文件的形式輸出到客戶端,形成網頁界面。Web層由Servlet和JSP程序組成,封裝在Web容器中。業務流程控制一般均由控制器Servlet來開發,響應用戶的查詢等請求并調用業務邏輯層的JavaBean來實現復雜的商務邏輯。
3.業務邏輯層。處理表示邏輯層傳遞過來的用戶響應,并將結果返回給客戶層。業務邏輯層封裝了系統提供給用戶的接口,是直接處理用戶請求的中心。這一層主要由JavaBean來實現。JavaBean的主要任務是處理商務邏輯,與客戶端交互,返回給它相應的操作結果等。
4.數據持久層。它完成持久對象到關系數據庫的映射,并對持久對象進行操作。業務邏輯模塊由Hibernate通過O/R映射文件實現對具體數據源的操作(即穿過持久層映射到具體的某個數據表),完成對數據庫的操作。對于小型的項目來說,這種實現確實是很高效且低成本的。
5.數據庫層。對象持久性的具體實現,可以是關系數據庫管理系統、文件存儲和對象數據庫存儲管理系統。
三、結束語
本文在傳統的J2EE框架中引入面向對象機制的數據持久層,使業務邏輯處理層有效地分離和隱藏了數據讀取和操縱中的所有數據訪問代碼細節,將客戶應用程序和底層存儲機制隔離開,完全抽象出開發應用程序時使用的數據物理細節,構建了更為有效的松耦合多層次web開發模型。
作者簡介:
劉明,女,漢族,遼寧省朝陽市人,大連交通大學軟件工程在讀碩士,朝陽師范高等專科學校數計系助教,研究方向:javaweb開發。