基于Struts和Hibernate軟件架構(gòu)實(shí)現(xiàn)基金管理信息系統(tǒng)_第1頁
基于Struts和Hibernate軟件架構(gòu)實(shí)現(xiàn)基金管理信息系統(tǒng)_第2頁
基于Struts和Hibernate軟件架構(gòu)實(shí)現(xiàn)基金管理信息系統(tǒng)_第3頁
基于Struts和Hibernate軟件架構(gòu)實(shí)現(xiàn)基金管理信息系統(tǒng)_第4頁
基于Struts和Hibernate軟件架構(gòu)實(shí)現(xiàn)基金管理信息系統(tǒng)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于Struts和Hibernate軟件架構(gòu)實(shí)現(xiàn)基金管理信息系統(tǒng)摘要本文詳細(xì)介紹了當(dāng)前流行的開源框架Struts和Hibernate,將兩者結(jié)合起來設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于eb的基金信息管理系統(tǒng)。在V架構(gòu)中,Hibernate實(shí)現(xiàn)模型部分?jǐn)?shù)據(jù)持久層,Struts實(shí)現(xiàn)視圖和控制器部分,這種設(shè)計(jì)形式使系統(tǒng)在開發(fā)效率、可維護(hù)性和可擴(kuò)展性方面都有很好的改良。關(guān)鍵詞v;struts;hibernate;基金信息管理系統(tǒng)0引言開發(fā)過程中一個(gè)優(yōu)秀的框架可以極大的進(jìn)步開發(fā)效率。隨著eb開發(fā)技術(shù)的日趨成熟,在eb開發(fā)領(lǐng)域出現(xiàn)了一些現(xiàn)成的優(yōu)秀的框架,開發(fā)者可以直接使用它們,Struts與Hibernate就是兩種比擬

2、成功的框架。Struts框架運(yùn)用V形式開發(fā)使eb應(yīng)用變得很靈敏,但Struts在del部分的實(shí)現(xiàn)并不理想,而/Rapping產(chǎn)品hibernate將關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)對象化,可作為持久層的解決方案。Struts和Hibernate框架整合那么很好地實(shí)現(xiàn)了控制流、業(yè)務(wù)調(diào)用、表示這三者的別離,使系統(tǒng)在開發(fā)效率、可維護(hù)性、可擴(kuò)展性方面都有良好的改良。本文的基金信息管理系統(tǒng)表現(xiàn)層采用了Struts,數(shù)據(jù)持久層選擇了Hibernate,業(yè)務(wù)邏輯層那么用普通java對象,從而開發(fā)出功能強(qiáng)大而又靈敏的基金信息管理系統(tǒng)。文中還著重闡述了基于Struts和Hibernate架構(gòu)實(shí)現(xiàn)基金信息管理系統(tǒng)的方法和關(guān)鍵技

3、術(shù)。模型視圖控制器delVientrller,簡稱V是一種目前廣泛流行的軟件開發(fā)設(shè)計(jì)形式。“del代表應(yīng)用的業(yè)務(wù)邏輯,“Vie代表應(yīng)用的表示,“ntrller提供給用的處理過程控制。通過這個(gè)設(shè)計(jì)模型,可以把應(yīng)用邏輯、處理過程和顯示邏輯分成不同的組件實(shí)現(xiàn),這些組件可以進(jìn)展交互和重用。模型層負(fù)責(zé)表達(dá)和訪問商業(yè)數(shù)據(jù),執(zhí)行商業(yè)邏輯和操作。在模型層變化的時(shí)候,它通知視圖層,并提供后者訪問自身狀態(tài)的才能,同時(shí)控制層也可以訪問其功能函數(shù)以完成相關(guān)的任務(wù)。視圖層負(fù)責(zé)顯示模型層的內(nèi)容,它從模型層獲得數(shù)據(jù)并指定這些數(shù)據(jù)如何被顯示出來。在模型層變化的時(shí)候,它將自動更新。另外視圖層也會將用戶的輸入傳送給控制器??刂破?/p>

4、負(fù)責(zé)定義應(yīng)用程序的行為。它可以分派用戶的懇求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時(shí)它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。Struts框架是實(shí)現(xiàn)V形式的一個(gè)應(yīng)用框架,它由一組互相協(xié)作的組件、Servlet以及JSPTagLib組成。Struts的核心組件有AtinServlet、Atin、AtinFr、Atinapping、AtinFrard及TagLib、配置文件等。其中控制器由AtinServlet來實(shí)現(xiàn),模型由Atin和AtinFr來實(shí)現(xiàn),視圖那么由JSP結(jié)合JSPTagLib來實(shí)現(xiàn)。1,2Hibernate是一種實(shí)現(xiàn)對象和關(guān)系之間映射bjetRelatinapping的框架。

5、它對JDB進(jìn)展了輕量級的對象封裝,使得Java程序員可以使用面向?qū)ο缶幊趟季S來操作關(guān)系數(shù)據(jù)庫。3在多層構(gòu)造的應(yīng)用中,業(yè)務(wù)層和數(shù)據(jù)層之間存在一個(gè)持久層,它負(fù)責(zé)應(yīng)用到數(shù)據(jù)庫的數(shù)據(jù)存儲,數(shù)據(jù)的檢索和更新。持久層的實(shí)現(xiàn)技術(shù)包括JDB、實(shí)體Beans、JD以及Hibernate等,但是JDB中數(shù)據(jù)訪問對象和SQL語句直接綁定在一起降低了可維護(hù)性,且不支持繼承和多態(tài)。EJB不支持繼承和多態(tài)而且還需要額外的EJB容器。相比之下Hibernate那么是一個(gè)非常好的選擇,目前的應(yīng)用系統(tǒng)大多使用關(guān)系數(shù)據(jù)庫,在做設(shè)計(jì)和開發(fā)時(shí)又是面向?qū)ο蟮姆绞剑@時(shí)就可以選用Hibernate來實(shí)現(xiàn)對象、關(guān)系之間的映射和數(shù)據(jù)的持久化

6、。而且Hibernate擁有一種功能非常強(qiáng)大的查詢語言HQL,這種語言與SQL非常相似,便于掌握。4在應(yīng)用Hiberante框架時(shí),首先編寫/R映射描繪文件,完成對象、關(guān)系數(shù)據(jù)庫之間的映射。持久對象可以根據(jù)映射文件生成,然后編寫業(yè)務(wù)邏輯類。這些JavaBean實(shí)現(xiàn)了詳細(xì)的業(yè)務(wù)邏輯,也封裝了對Hibernate的訪問。Hiberante利用數(shù)據(jù)庫以及其他一些配置文件如hibernate.prperties,XLapping等,為應(yīng)用程序提供數(shù)據(jù)持久效勞。通過前面的介紹,Struts和Hibernate都具有自己的優(yōu)點(diǎn)和缺乏,假如將兩者結(jié)合起來,通過Struts技術(shù)來降低V各層之間的耦合性,而利用

7、Hibernate架構(gòu)來降低業(yè)務(wù)模型部分的開發(fā)難度。結(jié)合之后的好處是采用Struts和Hibernate結(jié)合的應(yīng)用框架開發(fā)出來的信息系統(tǒng)無論在整體的架構(gòu)上還是在部分的復(fù)雜業(yè)務(wù)模型中都得到了更低的耦合性,它們的靈敏性與可維護(hù)性也得到了進(jìn)步,從而消除了單獨(dú)使用這些架構(gòu)開發(fā)系統(tǒng)的缺乏。本系統(tǒng)采用的StrutsHibernate構(gòu)架如圖1所示5。在這個(gè)方案中,視圖層是采用JSP技術(shù)結(jié)合Struts強(qiáng)大的TagLib來實(shí)現(xiàn);業(yè)務(wù)層的核心部件是控制器,它由Struts的控制組件AtinServlet、Atinapping及Atin來實(shí)現(xiàn),業(yè)務(wù)層還包含業(yè)務(wù)邏輯類,它由JavaBean來實(shí)現(xiàn)。當(dāng)然,這些Jav

8、aBean里封裝了與Hibernate的交互關(guān)系,業(yè)務(wù)層通過模型層來實(shí)現(xiàn)與數(shù)據(jù)庫資源的交流,這一部分工作由Hibernate來做。最底層是關(guān)系數(shù)據(jù)庫。圖1系統(tǒng)的應(yīng)用框架隨著技術(shù)的進(jìn)步和企業(yè)管理要求的進(jìn)步,辦公自動化系統(tǒng)逐步開展到了以“知識管理為核心的辦公自動化系統(tǒng),本工程的提出者為深圳市某一基金公司。本系統(tǒng)在基金辦公的自動化、網(wǎng)絡(luò)化的根底之上,再實(shí)現(xiàn)基金公司內(nèi)部及時(shí)通訊,進(jìn)步基金公司員工的溝通才能;并在統(tǒng)一的系統(tǒng)平臺下,連接基金公司各類信息系統(tǒng)和各類資源,是企業(yè)內(nèi)部進(jìn)展信息交流和管理的平臺。本系統(tǒng)采用Struts和Hibernate框架結(jié)合進(jìn)展eb應(yīng)用程序開發(fā),從而有效的保證系統(tǒng)的可交換性、可

9、維護(hù)性、可擴(kuò)展性和可移植性。本系統(tǒng)主要由我的工作臺、我的辦公室、辦公直通車、信息中心、研究平臺、公司論壇、系統(tǒng)管理幾個(gè)模塊組成。系統(tǒng)的總體架構(gòu)如圖2所示。采用Struts構(gòu)建系統(tǒng),系統(tǒng)中的每個(gè)模塊都有一個(gè)自己的配置文檔,以控制該模塊的流程,每個(gè)模塊除了業(yè)務(wù)邏輯不一樣之外,采用Struts和Hibernate架構(gòu)來實(shí)現(xiàn)模塊的技術(shù)與過程完全一樣。下面僅就研究平臺模塊中的基金凈值子模塊為例進(jìn)展說明。用戶登陸該模塊,可以閱讀公司的基金最新凈值列表,并可根據(jù)基金代碼、基金名稱查詢某支基金的歷史凈值和基金凈值走勢圖。圖2基金信息管理系統(tǒng)構(gòu)造圖4.1控制層的實(shí)現(xiàn)Struts控制器組件主要負(fù)責(zé)承受用戶懇求,更

10、新模型,以及選擇適宜的視圖組件返回給用戶,它在模型和視圖之間起這中間調(diào)度作用。Struts的核心是控制器部分的AtinServlet,而AtinServlet通過一個(gè)xl配置文件來配置業(yè)務(wù)流程,因此這個(gè)模塊用了一個(gè)struts-nfig-fund.xl來配置業(yè)務(wù)流程,同時(shí)在eb.xl中申明這個(gè)配置項(xiàng)。在struts-nfig-fund.xl中,聲明每個(gè)業(yè)務(wù)所需要的客戶端懇求、處理該懇求的Atin類,搜集該次懇求數(shù)據(jù)信息的FrBean類,并說明業(yè)務(wù)執(zhí)行完畢后各種結(jié)果應(yīng)該給用戶返回的視圖。struts-nfig-fund.xl代碼節(jié)選如下:fr-beansfr-beannae=fundFrtype

11、=.aking.phua.eb.fund.FundFr/fr-beansatin-appingsatinpath=/listFundNavtype=.aking.phua.eb.fund.FundAtinnae=fundFrspe=requestparaeter=listFundNavvalidate=trueinput=/fund/fund_nav_list.jsp/atin/atin-appingsAtinServlet將會按照這個(gè)配置表,在收到客戶端查看某支基金的基金凈值的信息之后,會將用戶在JSP頁面上提交過來的數(shù)據(jù)填充到模型類FundFr中,而這個(gè)FundFr必須先在struts-n

12、fig-fund.xl中定義。FundFr使用了Struts的Validatr驗(yàn)證框架,它能對用戶輸入的表單數(shù)據(jù)進(jìn)展驗(yàn)證。假如驗(yàn)證未通過,會將錯(cuò)誤返回輸入頁面。當(dāng)數(shù)據(jù)成功填充到FundFr后,AtinServlet會轉(zhuǎn)向FundAtin,在那里面進(jìn)展業(yè)務(wù)邏輯操作。FundAtin部分代碼如下:publilassFundAtinextendsBaseAtin.publiAtinFrardlistFundNav(Atinappingapping,AtinFrfr)thrsExeptinFundFrfrBean=(FundFr)fr;FundServiebiz=(FundServie)ServieF

13、atry.find(.aking.phua.servie.fund.FundServie.lass);TfundNavtfundNav=neTfundNav();Util.pyBeanPrperty(frBean,tfundNav);java.util.Listlist=biz.getFundNavs(tfundNav,15,frBean.getPage();ebntextHelper.setPageAttribute(fundlist,list);returnapping.getInputFrard();4.2模型層及持久層的實(shí)現(xiàn)在FundAtin中只是執(zhí)行了業(yè)務(wù)邏輯功能,而真正的業(yè)務(wù)處理和

14、對象持久化工作是在模型層與持久層中實(shí)現(xiàn)。在FundAtin中,創(chuàng)立了類FundServie的對象biz,然后調(diào)用該類的getFundNavs方法,查詢出該基金的歷史凈值表。類FundServie中g(shù)etFundNavs方法代碼如下:publiListgetFundNavs(TfundNav,intpageSize,intpage)thrsAppExeptinBaseQueryHelperbq=BaseQueryHelper.getInstane(.aking.phua.entity.TfundNav.lass);bq.eq(fundid,.getFundid();bq.eq(fundn,.ge

15、tFundn();bq.rderByDes(neStringfundid,settledate);Stringsql=bq.getQueryString();net.sf.hibernate.type.Typetypes=bq.getTypes();bjetparas=bq.getArgs();returngetQueryList(sql,paras,types,pageSize,page);TFundNav是Hibernate里面的持久化類,它的屬性通過Hibernate的配置映射文檔TfundNav.hb.xl映射到關(guān)系數(shù)據(jù)庫中。Hibernate的映射文件說明了一個(gè)持久化類與關(guān)系數(shù)據(jù)庫表

16、的映射關(guān)系,包括映射到哪個(gè)字段,以及集合屬性映射到哪些相關(guān)字段。TfundNav.hb.xl文件配置如下:hibernate-appinglassnae=.aking.phua.entity.TfundNavtable=T_FUND_NAVlazy=truepsite-idkey-prpertynae=fundidlun=FUNDIDtype=java.lang.Stringlength=6/key-prpertynae=fundnlun=FUNDNtype=java.lang.Stringlength=20/key-prpertynae=navlun=NAVtype=dublelength=

17、7/key-prpertynae=sunavlun=SUNAVtype=dublelength=7/key-prpertynae=settledatelun=SETTLEDATEtype=java.lang.Stringlength=8/psite-id/lass/hibernate-apping4.3Hibernate的數(shù)據(jù)庫連接配置在eb-INFlasses目錄下創(chuàng)立名為Hibernate.fg.xl的配置文件,并且將它的途徑添加到應(yīng)用的類途徑中就可以完成Hibernate的配置。該配置文件由Hibernate用來連接到數(shù)據(jù)庫、生成形式和獲得其它特定數(shù)據(jù)庫信息的屬性組成。要將底層數(shù)據(jù)庫內(nèi)的

18、變動映射到整個(gè)應(yīng)用,只需要修改該文件內(nèi)的屬性值。該工程使用rale9i,其數(shù)據(jù)庫連接配置如下:hibernate-nfiguratinsessin-fatryprpertynae=hibernate.nnetin.driver_lassrale.jdb.driver.raleDriver/prpertyprpertynae=hibernate.nnetin.urljdb:rale:thin:192.168.70.98:1521:raledb/prpertyprpertynae=hibernate.nnetin.usernae#/prpertyprpertynae=hibernate.nnetin.passrd#/prpertyprpertynae=hibernate.nnetin.pl.size50/prpertyprp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論