999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于J2EE的輕量級企業信息系統框架應用

2008-01-01 00:00:00
商場現代化 2008年1期

[摘要] 基于Struts、Spring和Hibernate對企業信息系統進行分層。在強調它們技術原理的基礎上并結合應用實例,提出三種開源框架的整合方式,應用它們作為一種企業信息化解決方案。實現了系統各層次的松耦合,提高了擴展性、復用性和可維護性,具有一定的現實意義。

[關鍵詞] 企業信息化 輕量級框架 Struts Spring Hibernate J2EE

目前軟件系統發展已經相當復雜。大型企業信息系統的設計者越來越注重通過一個合適的框架完成系統開發。基于J2EE企業信息系統的平臺無關性、層次性、安全性與可擴展性正成為企業信息化的主要解決方案。因此本文通過集成Struts、Spring和Hibernate來實現模塊間的解耦,以提高企業信息系統的擴展性、復用性和可維護性。

一、J2EE框架技術

Struts起源于SmallTalk的MVC。即Model、View和Controller。由Controller解耦顯示邏輯與業務邏輯,支持實現松耦合結構。面對WebWork、Spring MVC、JSF、Tapestry等,Struts設計成熟、信息資源豐富、開發群體廣泛,是目前最常用的表現層MVC。

Spring是一種為解決企業應用程序開發復雜性的輕量級應用程序框架和容器。集成了J2EE許多最佳與前驅性實踐。具有傳統EJB的關鍵服務而不依賴于任何組件替代重量級EJB框架。擴展了所集成的組件并提供更高級功能。Spring完成了實際開發所需的單態模式與工廠模式。核心機制是DI(Dependency Injection)與IOC(Inversion of Control)。通過DAO和ORM 實現數據訪問的抽象模塊,并支持Hibernate。

Hibernate是低侵入ORM(Object-Relationship Mapping)框架。聯接了面向對象程序設計語言和關系型數據庫。實現了對JDBC的輕量級封裝。通過J2EE中的JDBC、JTA、JNDI實現Session、Transaction和數據庫連接管理。由HQL以面向對象方式查詢持久化對象。ORM框架還包括OJB、TopLink等。OJB是Apache的子項目,開發文檔不多,規范一直不很穩定,并未得到廣泛支持。TopLink一旦作為商業產品使用則要收取費用。

二、框架的整合與實踐

對于一個企業信息系統來說,考慮到雖然系統中各模塊實現不同,但原理大同小異。因此,本文以開發的信息發布子系統為例集成Struts、Hibernate和Spring,并說明系統各層實現。系統架構處理流程如圖所示。表現層通過控制器與業務邏輯層交互,業務邏輯層同時處理業務規則與數據訪問,再與數據持久層交互。

圖 系統的架構處理流程

1.Domain Object

根據系統需求從應用中抽取實體。子系統模型實體類包括:(1)Publisher:發布者信息。(2)Information:包括標題、內容、時間、圖片路徑、新聞審核與推薦等。(3)Category:信息分類。(4)View:信息說明或補充評論。用POJO(Plain Old Java Object)作為PO。以Information為例,其中包含Publisher、Category和View類對象。

<class name=\"informationpub.model.Information\" table=\"information\">

<id name=\" informationId \" column=\"informationId\" type=\"Integer\">//映射標識

<generator class=\"increment\"/></id>

<property name=\"informationTitle\" column=\"informationTitle\" length=\"30\" type=\"string\" not-1=\"true\"></property>

......

<many-to-one name=\"category\"class=\"informationpub.model.Category\"column= \"categoryId\" not-1=\"true\"/>

......

2.數據持久層

數據持久層采用DAO(Data Access Object)設計模式。對底層數據庫提供CRUD操作,對上層業務邏輯提供DAO接口。DAO實現包括三個部分:(1)在DAO接口中聲明CRUD等方法。(2)實現DAO接口并擴展支持類。(3)產生DAO實例,實現業務邏輯與持久層的解耦。然后獲得DAO 工廠實例,產生DAO組件。通過擴展HibernateDaoSupport和對應DAO接口完成Hibernate實現。傳入sessionFactory引用到由HibernateDaoSupport提供的方法中,返回HibernateTemplate實例完成數據庫操作。以Information為例的DAO接口實現類如下:

public class InformationDAOHibernate implements InformationDAO{

public void saveInformation (Information information) {

getHibernateTemplate().saveOrUpdate(information); //保存一條信息

……}}

Spring作為DAO工廠。

<beanid=\"sessionFactory\"class=\"org.springframework.orm.hibernat3.LocalSessionFactoryBean\">……//列出并加載PO映射文件

<beanid=\"informationDAO\"class=\"informationpub.dao.InformationDAOHibernate\">

// sessionFactory的依賴注入

<property name=\"sessionFactory\" ref=\"sessionFactory\"/></bean>

可見當數據庫結構改變時,僅影響DAO而并不會涉及業務邏輯層。業務邏輯只要專注其自身的實現,而不需要關注底層數據庫訪問,實現了業務邏輯與特定數據庫訪問的解耦。

3.業務邏輯層

業務邏輯層完全依賴DAO組件,只需調用DAO接口。用Facade封裝多個DAO組件。依賴由Facade提供的一個高層接口。業務邏輯對外提供InforPubFacade接口,表示層只要面向該接口編程,實現了業務層與表示層的解耦。由InforPubFacadeImp擴展InforPubFacade接口實現。InforPubFacadeImp類中將各DAO作為成員屬性。

public class InforPubFacadeImp implements InforPubFacade{

private InformationDAO informationDAO;

……//各類的DAO作為成員屬性

public void setInformationDAO(InformationDAO informationDAO) {

this. informationDAO = informationDAO;}

public void saveInformation (Information information) {

InformationDAO.saveInformation (information);

}……

}

4.表示層

表示層包括ActionForm和ActionServlet。ActionForm在視圖和ActionServlet之間傳遞數據。由ActionForm 的validate()完成數據驗證。ActionServlet再根據接響應完成到Action的轉發。再由Action的execute()獲取信息完成業務邏輯驗證并決定調用的業務邏輯。在Struts中完成Spring容器的加載。不再將ActionServlet攔截的請求轉發到struts-config.xml中的Action,而是轉發到由Spring容器管理的Action。并由Spring的IOC管理Action。通過DelegatingRequestProcessor擴展Struts的子請求處理器RequestProcessor,將請求轉發到action-servlet.xml。

<controller processorClass=\"org.springframework.web.struts.DelegatingRequestProcessor\"/>

<plug-in className=\"org.springframework.web.struts.ContextLoaderPlugIn\">

<set-property property=\"contextConfigLocation\"value=\"/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml\"/></plug-in><beans>

<bean name=\"/viewInformation\"class=\"informationpub.web.ViewInformationAction\" >//對應struts-config.xml中viewInformation 的Action

<property name=\"viewInformation\">// 為Acion依賴注入

<ref bean=\" InforPubFacade \"/></property> </bean>

……//其他Action及相應依賴注入

</beans>

三、結束語

本文集成Struts、Hibernate和Spring。系統層次清晰,由Spring貫穿整個系統,無縫整合表示層、業務邏輯層和數據持久層。系統靈活性得到增強。業務邏輯只需實現一次,組件之間以接口方式耦合,實現了企業信息系統最大限度的解耦。開發的系統具有良好的伸縮性與可擴展性,從而提高企業運作效率與降低開發成本,具有一定的現實意義。

參考文獻:

[1] James Goodwill. Jakarta struts[M]. O’REILLY Publishing, 2002.

[2] Ted Husted. Struts in Action: Building Web Applications with leading java framework[M]. Manning Publication Company, 2002.

[3] Matt Raible. Spring Live [M]. SourceBeat, 2004.

[4] Rod Johnson. Expert One on One J2EE Development without EJB[M]. Wiley Publishing,2004.

[5] Christian Bauer, Gavin King. Hibernate in Action[M]. Manning Inc,2004

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 青青久视频| 999国产精品| 五月婷婷精品| 国产精品yjizz视频网一二区| 欧美一级夜夜爽www| 播五月综合| 国产女人18水真多毛片18精品 | 亚洲性色永久网址| 国产视频欧美| 亚洲欧美激情另类| 亚洲天堂视频网| 久久毛片基地| 一本大道在线一本久道| 尤物在线观看乱码| 欧美午夜小视频| 激情综合五月网| 真人免费一级毛片一区二区| 制服丝袜一区二区三区在线| 91成人在线观看| 最近最新中文字幕在线第一页 | 久青草网站| 国产资源站| 狠狠久久综合伊人不卡| 精品自窥自偷在线看| jizz在线免费播放| 成年A级毛片| 亚洲欧美成人在线视频| 亚洲品质国产精品无码| 丁香婷婷激情综合激情| 国产伦片中文免费观看| 亚洲精品中文字幕无乱码| 国产手机在线小视频免费观看| 视频一本大道香蕉久在线播放| 午夜成人在线视频| 日韩专区第一页| 亚洲精品在线观看91| 国产黑人在线| 亚洲黄色成人| 亚洲第一综合天堂另类专| 亚洲色图欧美| 亚洲欧洲日韩综合色天使| 亚洲日韩高清无码| 99er精品视频| 第一页亚洲| 日日碰狠狠添天天爽| AV色爱天堂网| 国产日韩欧美一区二区三区在线| 亚洲va在线∨a天堂va欧美va| 老司机久久精品视频| 婷婷六月天激情| 91黄视频在线观看| 99久久性生片| 亚洲精品国产成人7777| 免费在线成人网| 99久久国产综合精品2023| 亚洲AV成人一区二区三区AV| 手机成人午夜在线视频| 亚洲精品午夜天堂网页| 国产麻豆永久视频| 91福利片| a级高清毛片| 98超碰在线观看| 热九九精品| 99在线视频免费| 天堂久久久久久中文字幕| 欧洲一区二区三区无码| 国产毛片片精品天天看视频| 一本大道香蕉高清久久| 久久99精品久久久久久不卡| 在线网站18禁| 一级全免费视频播放| 欧美日韩亚洲综合在线观看| 色色中文字幕| 一本大道无码高清| 色综合婷婷| 91国内在线视频| 国产免费久久精品99re不卡| 欧美日韩精品在线播放| 免费a级毛片18以上观看精品| 欧美激情伊人| 99精品伊人久久久大香线蕉| 性欧美精品xxxx|