【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了MVC2 Struts框架与Hibernate在大型财务系统中的应用 - 硕士论文相关资料,希望对各位网友有所帮助!
西北工业大学 硕士学位论文MVC2 Struts框架与Hibernate在大型财务系统中的应用 级别:硕士 专业:软件工程 指导教师:王仲奇 20070301西北工业大学硕L学位论文摘要 摘要 “软件复用”和“软件体系结构的深入研究”是现代软件开发的重要特点。
优秀的软件需要有一个成功的架构,但软件架构的建立是复杂而又持续改进的过程,
软件开发者开发项目尽量重用以前的架构,或开发出通用的架构,s衄l忸就是其中之一。
Hibemate是一种新的ORM(ObjectRelationalMappin曲映射工具,它不仅提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制。
当前企业级w曲应用开发如火如荼,但面临着许多严重的问题,如w曲页面布局混乱不易维护、国际化难度大、持久层设计被忽略或不合理而难于跨数据库系统移植、不能跨平台和跨浏览器、系统难以扩展而不能适应多变的需求等。
虽然SnlIts架构解决了视图层、业务层和控制层的分离,但并没有对复杂的持久层提供灵活的架构支持;相反,Hibemate架构则提供了灵活的持久层支持,对应用的整体架构却没有任何帮助。
因此,通过将这两个架构整合起来,可以得到一个开发灵活、低耦合及易于维护的企业应用完整解决方案。
本文以会计事务所w曲应用系统为实例,对当前流行的J2EE平台及其相关框架技术进行了深入的研究,阐述了s衄如框架和Hibemate框架的技术特点,综合其优缺点给出了一套基于StnIts框架和Hibe呱幛e’框架的企业级w曲应用解决方案。
然后结合“MyKomon财务公司内部MIS系统”对系统需求进行分析,阐述了系统的角色及权限控制,介绍了系统的总体框架及业务模块划分情况,描述了各个业务模块的相应业务功能和业务流程,最后给出了系统基于stnJts框架和HiberIl{lte框架的实现,提高了企业级wEB系统的可维护性和可移植性,并在系统实现部分解决了stn】ts框架和Hibemate框架中的一些问题。
通过对系统实现的描述,本文阐述了S仇lts框架在分离视图层、业务层和控制层中的优越性,Hiben眈在数据持久化过程中的优越性以及两种框架的结合对减少层问耦合,提高
代码复用性的作用。
目前,这套基于S饥1ts框架和Hibemate框架开发的web应用系统已经 正式投入使用。
它的正常运作证明了s仇lts框架和Hibemate框架的结合在企业级应用中的可行性和先进性,这套系统的实现必将为更多的企业应用打下一个良好的基础。
关键词: 模型/视图/控制,Struts,信息管理系统,对象关系映射,Hibern ate西北工业丈学硕t学位论文ABSTRACT ABSTRACT “SoR啪reReu一’卸d“h卜depmResearchOfSo ftwareArchitecture”arcimponantcharacteristicsoft11epre∞m∞Rwaredevelopment.TheexcellentsoRwaremusthaveasuccess龟Ifhmework.But,tllebuildillgofso厅ware丘锄eworkisacomplicatedproI)cssa11dshouldbeimpf0Vedcontinuollsly.Thedeveloperstryt11eirbeSttorellSethefonIler行锄eworkordeVelopacomrIlon铂mewod【,StnltsisOncofⅡlcm.Hibe础牡eisanewORMmappingtoolⅥ畅chisnotonlyO侬翳nlemappingf如mJavaCl船st0咖baSe,butalsoo仃毫rsthemecllallismoftlleda诅iIlqlliring锄d他coVering.EnterpriseWeb印plicationdevelopmemisgoingonlikearagingfireno、va由呼s.Bm,“hasbeencollfhlted嘶tllmarly辩riollsproblems.Forex锄ple, conmsionofWebpagelayoutWhichmayc肌∞hardmaintenancc,bigdi茄cuhiesinintemtionalization,designofpe咖allencelevelsisignoredorincoIlsequencet0llaVep00rponaIbil时betweendiff毫rentDBsyStems,beingiIlcap曲leofacmssplatfoms锄dacrossbrowsers,poorexpallsibilityforchaIlgefhlrequircmentsetc. WhileTheS仇Its纳meworkOlllysolvestlIes印aration Of“ewmodule,哪嘲钳ionandcon仃ol,ith勰someproblemsilldevelopillgpe陪isteIlcescfvice.ontllecont捌暇HibemateonlysolVesthepfoblemsiIldeVelopingpersistenceseⅣice,bmitdoesnotlli〕唱toimprovet11esystemfhmework.So,tllecombillatiDnoft11ese咖tecllIlologies谢ll百ve峭asofhvarcsolutionwi也goodexmaintainabili够Thispaperh嬲madea11in-d印thstudyofcummtpopularJ2EEplatfom锄d“sinte玎elated觑吼e、 Ⅳorktecllllotansibility柚dlo西es,innoducestllech蹦衙eristicsofStnlts行锄eworkandHibemate,andpfovides锄e旅印ri∞W曲applicationsolution州mStnl协妇newofk锄dHibematetecllllologyfirstly.Then,thisp印ermakedtllerequirelIlentanalysisfortheMISsyst锄oftheMyKomonCompany,introducesthef01eandcon.espondingautllorityofthesystem,expoundsthes协1a}ureofmewholesystemalldthebusinessmodulecompanmelltalization狮ddescribest11efhnction锄dworkflowofallbusinessmodule.Finally,tllisp印ergivestheimplementationwithstmtsfr锄eworkalldHibematetccllIl0109yofthesystem.nincludessolutionofsomedifncultproblemsoftheimplementationofStrutsfhmeworka11dHibematetecllllology.T|1roughthedescriptionoftheimplementation,thispapershowtheadVantageofStrIltsfbmeworkintllefieldofseparatingviewmoduleaIldcomml,锄dtheadv锄诅geofHibemateindevel叩ingpersistence III——垒旦!seⅣicea芏ldtheadV锄乜唱eofmistwotec}lIlology’scombination. Nowadays, “sapplicationwi也Struts面阻me型曼!workaIldHibematetechnologyhasbeellpmintopmcticeinthecustomcompany.nsuccess如llycenifiesmeW曲applicationsolutjon’sco玎ectness.ingfornutherapplication. 111issolutionh硒use如lmeaIlKeywords: MVC,Struts,MIS,ORM,Hibernate 西北工业大学 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属于西北__L=业人学。
学校有权保留并向国家有关部门或机构送交论文的复印件和电子版。
本人允许论文被查阅和借阅。
学校可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印喊扫描等复制手段保存和汇编本学位论文。
同时本人保证,
毕业后结合学位论文研究课题再撰写的文章一律注明作者单位为两北工业大学。
剿指 保密论文待解密后适用本声明。
学位论文作者签名 ?卵7年多月≥护日砌7年了 导教 师签 西北工业大学 学位论文
原创性声明 秉承学校严谨的学风和优良的科学道德,本人郑重声明:所呈交的学位论文,是本 人在导师的指导下进行研究上作所取得的成果。
尽我所知,除文中已经注明引用的内容 名: 阑I致渤的地方外,本论文不包含任何其他个人或集体已经公丌发表或撰写过的研究成 果,不包含本人或其他已申淆学位或其他_}}_I途使川过的成粜。
对本文的研究做出煎要贡 献的个人和集体,均已在文巾以明确方式农明。
学位论文作 本人。
学位论文与资料若有不实,愿意承担一切相关的法律责任。
者签名:三 一≥和7年弓月弓pf’ 擞西北T业大学硕士学位论文绪论 第1章绪论1.1课题来源 在当今激烈的市场竞争下,一个企业特别是跨地区跨国集团企业的信息化水平在一定程度上决定着企业的市场竞争能力。
因此基于企业业务运作的
管理系统得到广泛的使用。
传统的基于C/s(Clie州SeⅣe)模式的管理系统暴露出其客户端渐渐庞大和服务器端负担过重的现象。
客户端担当了过多的角色而显得臃肿,虽然系统第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想。
本课题来源于北京文思创新软件有限公司与上海名南财务有限公司合作的 “上海名南财务MIS系统”二期工程。
为了满足业务发展需求,上海名南财务公司决定将原有内部MIS系统从基于C/S结构的原始系统改为基于B/s结构的改进
系统。
北京文思创新软件有限公司采用基于stnns框架的Mvc模式对其进行开发。
对于数据持久化操作,由于本系统用到的表较多且表表之间存在复杂的映射关系,如果采用传统的JDBc(Ja_vaD她鸿asecomectiv时sta|1dard)带来的
代码的复杂性和日后的维护量将直线上升,而且不利于调试,此外,要实现
代码的复用也是很困难的。
这就需要有一种更方便、更通用的方案来解决需求的变动所带来的
代码重用和产品维护问题,也需要一种更方便的实现数据持久层的框架以及实现这种框架需要的工具。
本课题的目标是:针对目前J2EE技术的快速发展和应用J2EE产品缺乏可重用性、效率低、性能差的缺点11】,介绍一些可用来提高J2EE应用程序性能的设计模式及其实现框架,并且介绍应用新技术Hibemate来简化数据库操作、提升数据持久层开发速度和性能、构建一个持久层调用框架并介绍如何应用设计模式到持久层中。
1.2国内外研究状况及发展趋势 Struts最早于2000年5月作为Jakana项目的组成部分问世,Jal【ana项目由Apache基金组织运作12J。
项目的创立者希望改进和提高JSP(JavaServerPages),Servlet,标签库以及面向对象的技术水平。
Jal【ana项目有很多成功的部分,例如大名鼎鼎的Tomcat,以及Cactus,Lo酣等一些激动人心的产品。
Stmts作为MVC2设计模式的
开源框架很好的体现了J2EE的多层结构,将视图、模块及控制很好的进行了分割,减少了耦合,提高了
代码的复用性。
Stmts已经逐步越来越多运用于商业软件,是一种非常优秀的J2EEMVC2实现方式。
而且Stnlts西北工业大学硕士学位论文Mvc2stmts框架与Hlbcma【c在大型财务系统中的应用是开放源
代码的项目,目前通用的版本为Snlltsl.·,最新版本为struts2.+,Stmts2版本改正了snuts1版本中存在的错误和不足,同时,增强、改进以及增加了许多新的功能,它的前景是不可限量的。
在上海名南财务公司内部MIs系统的开发中,数据库相当复杂,所以对数据库的开发具有相当的难度,对数据持久层的开发便成了一个大的问题。
为了很好的管理处理业务层与数据库的关系,在业务层和数据库之间增加了数掘持久层,进行数据持久化管理。
目前有三种流行的对象持久化技术在被广泛使用【3】: (1)使用sQL/JDBC手工编码持久层。
实现Java持久性的最普遍的方式是程序员直接使用sQL和JDBc进行工作。
sQL(结构化查询语言)是数据库系统的通用语言,利用它,用户可以用几乎同样的语句在不同的数据库系统上执行同样的操作。
SQL语言为用户提供了强大的功能,按照功能可分为4大类,分别是数据查询语言、数据定义语言、数据操纵语言和数据控制语言。
数据
查询语言的功能是查询数据;数据定义语言的功能是建立、删除和修改数据对象;数据操纵语言的功能是完成数据操作的命令,例如查询;数据控制语言的功能是控制对数据库的访问,服务器的关闭、启动等。
JDBC是一种可用于执行SOL语句的JavaAPI(ApplicationProgmmmingInte血ce)吲。
它由一些Java语言编写的类和界面组成。
JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。
JDBc是一种底层API【5】,这意味着它将直接调用sOL命令。
JDBc完全胜任这个任务,而且比其他数据库互联更加容易实现。
同时它也是构造高层API和数据库开发工具的基础。
高层API和数据库开发工具应该是用户界面更加友好,使用更加方便,更易于理解的。
但所有这样的API将最终被翻译为像JDBC这样的底层API。
然而,为域中的每个类手工编写持久性
代码的工作量是非常大的,会消耗大部分的开发时间。
此外,当需求改变时,一个手工编码的解决方案总是需要更多的注意和维护努力,当开发一个大型的应用程序的时候,对于繁多的SQL语句的改变,将给开发带来了很大的不利。
(2)使用EJB(EnterpriseJavaBean)。
最近几年,EJB 已经成为持久性数据的推荐方式。
然而,EJB规范的设计缺陷阻碍BeaIl管理的持久性实体Bean有效地执行。
一个可接受的解决方案是容器持久管理(CMP)。
但是,CMP并不能表示一种对象——关系匹配的解决
方案。
CMP与关系模型中的表是按照一对一的方式定义的。
这样,表的粒度过粗,不能够完全利用Java丰富的类型。
在某种意义上,CMP强迫你的域模型成为最初通常的格式。
另一方面,使用CMP来实现EJB宣称的目标——可重用的软件组件,又显得粒度太细。
而一个可重用的组件必须是一个粒度非常粗的对象,面对数据库模式的一些小的改变它必西北工业大学硕士学位论文绪论须提供一个稳定的外部接口。
(3)使用Hibemale框架。
Hibemate去掉了很多繁琐的
工作,使开发 者可以集中到业务问题的实现上嘲。
不论开发者使用什么样的应用开发策略——自项向下,从域模型开始;或者自底向上,从一个现有的数据库模式开始——使用Hibenl;lIc和适当的工具将会减少大量的开发时间。
在手工编码的持久性系统中,关系表示和对象模型之间存在一种不可避免的紧张。
改变一个几乎总是包含改变其它的,并且一种表示设计经常需要妥协来适应其它的存在。
基于Hibemale的
代码编写相对较少,更容易对系统操作的理解。
在有时间限制的项目中,手工编码的持久层通常允许开发者利用一点时间做一些优化。
Hibe珊lte允许开发者在全部的时间内做更多的优化,开发者可以花更多的时间手工优化一些其余的瓶颈。
Hibemate目前的通用版本为Hibemate2。
1.3本文工作重点 本文作者期望通过对StnnsFr锄ewjrk以及对象持久化技术的分析研究,从一个侧面体现出Mvc2设计模式的优势,以及Hibemate对于J2EE应用开发的意义,并将stnJtsFramew6rk与Hibemate应用于MykomonMIs系统中。
文章总体上分为四大部分。
第一部分简单介绍了本课题的来源,及相关领域国内外的研究情况及发展趋势,这部分为文中的第一章。
第二部分介绍了系统所涉及到的相关理论基础:J2EE多层分布式体系结构,,MVc设计模式,关系数据库和面向对象技术和持久层与w曲应用,stnltS框架以及Hibema_te应用框架,这部分为文中的第二章。
第三部分介绍上海名南财务公司内部MIs系统的需求及设计:系统目的,系统角色及权限,系统业务逻辑需求;业务流程设计,及业务模块设计,这部分为文中的第三章。
第四部分是海名南财务公司内部MIS系统基于s仃Ilts及Hibemate的 实现:整体框架的实现,表现层实现,业务逻辑层实现,数据持久层实现,非西文乱码及国际化
问题的解决原理及方案,权限控制,S协lts实现文件上传以及Hibe砌lte分页处理,这部分为文中的第四章。
西北工业大学硕士学位论文J2EEMvC2StnIts及Hibcmate相关理论基础 第2章J2EEMVC2Struts及Hibemate相关 理论基础2.1J2EE多层分布式体系结构 根据sm的J2EEBlueprints提出的具有建议性的、规范化的J2 EE应用
设计模型,可以描述出J2EE的多层分布式体系结构【71(如图2.1所示)。
由图中可知,基J2EE的企业级应用将被部署到下面四个不同的容器(container)中:w曲容器:包括JSP和ser、FIet两种组件。
接受从客户端发来的w曲请求,调用业务逻辑层组件进行业务处理【8】,最后将处理结果响应给客户端。
EJB容器:包含的组件为EJB。
主要用于服务器端的商业逻辑的实现。
EJB通过标准协议和J2EE提供的服务或API来访问企业信息系统层。
Applct容器:包含的组件为Applet。
Applet是嵌在浏览器中的一种 轻量级客户端,出于安全性的考虑它无法使用J2EE的各种Service和API。
ApplicationCliem容器:包含的组件为ApplicationCliem。
相对Applet而言是一种重量级的客户端,它能够使用J2EE的大多数SeⅣice和API。
(:一::魏 寻 ERP, ’。
一一_ SCM一 V恬b容器IConta叭e0 卜!_〕臣‖ 一—’—— 。
刍00j{;二 巨型霞 , E由容器●Con协me0 一_ 一 广 —————————— D 二黼 队 L 竺一 ~ 一 、、_她o 、一…————————————一~—,。
一 一Appllcml硼 图2.1J2EE平台的多层分布式体系结构 这四个容器再加上DataContainer构成了J2EE平台的四层结构:客户端层、w曲层、业务逻辑层、企业信息系统层(EmerpriselnfomationSystem,即EIS层或Data数据层)。
如将客户端层与web层合并看作表现层(Present“on)的话,两北工业大学硕士学位论文Mvc2stmb框架与HlbemaIe在大型财务系统中的戍用则又成为一种三层结构【8】;如将web层与业务逻辑层合并看作中间层的话,又成为三层结构的另外一种情况了。
由此可见,J2EE平台多层结构具有极强的灵活性。
在J2EE的各种服务和API中,JDBC和JCA用于企业资源f各种企业信息系统和数据库等)的连接,JAx.RPC,JAxR和SAAJ则是实现w曲services连接的基本支持。
J2EE的这种多层的端到端的应用系统架构,要求我们在设计J2EE应用的时候,首先需要选择的就是J2EE客户端的类型19J,应根据用户的使用模式及应用环境的特点来选择适合的客户端类型和通信协议,如Ja_vaApplet客户端和Javaw曲Stan客户端适合于复杂的图形用户界面,如大量的数据录入、数据统计等应用,能满足高效的用户交互需求,根据具体应用环境的不同,可选择HrrP(S),RMI/IIOP或JNLP等
通信协议【10】。
其次,在中间层,着重在实际部署时从可靠性和可伸缩性及平衡负载方面考虑,它们可以运行于单一的或多个物理平台上。
2.2基于J2EE的设计模式 设计模式的概念最初来自城市建筑专家cllristopherAlexande r对建筑模式的定义:“每一个模式描述了一个在人们周围不断重复发生的问题,以及该问题解决方案的核心。
这样,你就能使用该方案而不必做重复劳动。
”【llJ这种建筑上的模式思想同样适用于面向对象的设计模式,模式的核心就在于提供了相关问题的解决方案。
基于J2EE的设计模式是在GoF模式的基础上结合J2EE平台自身的特点进行创新而提出的。
考虑到模式的应用,又可以将J2EE体系结构扩展为五个层次:客户层、表示层、业务层、集成层、资源层。
其中客户层和资源层并不是J2EE平台直接关注的问题,这样只剩下中间三层,总计16个模式,其中MvC模式划归于表示层,DAO模式划归于集成层。
2.2.1MvC设计模式概述 MVC(模型一视图一控制器)设计模式是80年代锄alltalk.80使 用的一种软件设计模式,至今已经被广泛的使用,他是SUN公司J2EE平台推荐使用的设计模式。
MVc强制性地使应用程序的输入、处理和输出分离。
使用MvC,应用
程序分为三个核心部分:模型、视图、控制器Il21,它们各自处理各自的事务。
1)模型(Model),就是业务流程/状态的处理以及业务规则的制定,它是应用程序的主体部分。
业务流程的处理过程对其它层来说是黑箱操作,模型接受 6西北工业人学硕上学位论文J2EEMvC2stnlb及Hibcnlalc相关理论基础视图请求的数据,并返回最终的处理结果。
被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型可以为多个视图提供数据,从而为我们的应用程序减少了
代码的重复性。
2)视图,视图是应用程序中用户界面相关的部分,是用户看到并于之交互的界面。
MvC一个大的好处是它能为你的应用程序处理很多不同的视图。
在视图中其实没有真正的处理发生,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
3)控制器,它的工作就是根据用户的输入,控制用户界面数据显示和更新Model对象状态。
控制器接受用户的输入并调用模型和视图去完成用户的需求。
所以当单击w曲页面中的超链接和发送H聊L表单时, 控制器本身不输出任何东西和做任何处理。
它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
图2.2描述了模型、视图、控制器它们三者的关系【l列: ———◆方法调用…一一+ 事件 图2.2Mvc组件类型的关系和功能2.2.2MVC的优点 Mvc的优点表现在以下几个方面: 1)可以为一个模型在运行时同时建立和使用多个视图。
变化一传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。
2)视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动念的打开或关闭、甚至在运行期间进行对象替换。
西北t业大学硕十学位论文Mvc2stnIts框架与Hlbematc在大型财务系统中的应用 3)模型的可移植性。
因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
需要做的只是在新平台上对视图和控制器进行新的修改潜在的框架结构。
可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。
2.2-3MvC的不足之处 MVC的不足表现在以下几个方面: 1)增加了系统结构和实现的复杂性。
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
2)视图与控制器问的过于紧密的连接。
视图与控制器是相互分离但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
3)视图对模型数据的低效率访问。
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。
对未变化数据的不必要的频繁访问,也将损害操作性能。
4)目前,一般高级的界面工具或构造器不支持Mvc模式。
改造这些工具以适应MVc需要和建立分离的部件的代价是很高的,从而造成使用Mvc的困难。
2.3关系数据库和面向对象技术2.3.1关系数据库 自从1970年IBM圣约瑟研究实验室的高级研究员埃德加一考特(EdgarF删瞌Codd)在ColIlrnuIlicatioIlsofACM上发表了《大型共享数据库数据的关系模型》一文,定义了关系数掘库的基本概念,引进了规范化理论,为关系数据库全面开发奠定了基础以来,关系数据库引来了广泛的注意和研究【l41。
关系数据库是基于关系模型的数掘库。
“关系”是数学中的一个基本概念,由集合中的任意元素所组成的若干有序偶对表示,用以反映客观事物间的一定关系。
关系模型的基本思想是把实体模型与实体模型间的联系均归为二维表格的形式加以描述。
二维表中的每一列对应实体的一个属性,每一行由多种属性组成的多元组与一个特定的实体相对应。
实体和联系均用关系描述,或者通过关系之问的关系运算建立联系11”。
关系模型与其他数据模型相比,首先,其数据结构简单、规范;其次,它运用了先进数学工具一一集合运算和谓词运算,西北T业大学硕士学位论文J2EEMVC2stⅢts及HlberIlaIe相关理论基础并创造了投影、选择和连接运算,即关系代数。
使用.