公交查询系统设计与实现_第1页
公交查询系统设计与实现_第2页
公交查询系统设计与实现_第3页
公交查询系统设计与实现_第4页
公交查询系统设计与实现_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)题目公交查询系统设计与实现院别软件工程学院专业网络技术班级网络11日期2014/2/20毕业设计(论文)任务书软件工程学院2014届网络专业毕业设计(论文)任务书毕业设计(论文)题目公交查询系统设计与实现校内(外)指导教师职称工作单位及部门联系方式副教授网络教研室一、题目说明(目的和意义)公交查询系统主要用于对公共乘车线路的查询和选择,为人们的出行提供方便,无论是财力还是人力都有很大的节省,更重要的是大大节约了人们的行车时间,有效减少了人们因乘车而迟到、误点的问题。面对如今城市化的飞速发展,公交线路的不断密集,一个有效的公交查询系统对人们的出行起着重要的作用。系统主要使用ECLIPSE开发环境,后台采用SQLSERVER2005数据库为开发平台来实现,主要包括后台数据库的建立和维护以及前台应用程序的开发两个方面,主要实现站点查询、站站查询、线路查询和用户留言等功能。二、设计(论文)要求(环境、内容)【设计内容】前台客户端(1)公交线路查询模块(2)公交站点查询模块(3)公交换乘查询模块(4)系统信息/使用说明模块(5)留言版模块(6)相关查询链接模块后台管理端(1)快速通道模块系统信息、添加管理员、添加公交线路、系统帮助(2)公交信息管理模块添加公交线路、公交线路列表、修改安全密码、修改信息资料(3)留言版管理模块留言列表【设计步骤】1对公交查询系统进行操作可行性、经济可行性及功能可行性的研究。2对系统进行需求性分析、系统功能分析、系统功能模块设计。3系统概要设计、详细设计。4数据库设计。5测试、调试系统并运行。实现系统的各个功能。6管理员对系统进行添加、删除、修改等操作;用户注册、登录系统查询所需要的信息。【注意事项】1毕业设计的时间安排根据时间表,最后一周,检查程序、交毕业设计论文;交毕业设计系统POWERPOINT电子显示文稿;毕业设计论文要求有封面(封面上写明班级、姓名、指导教师、时间等),并装订成册。2指导老师打分方案毕业设计成绩考勤30论文40技术实现30。3每周考勤一次,有特殊情况需向指导教师或班主任老师请假。4具体论文上交时间,论文答辩时间以系办通知为准。三、进度表日期内容第15周第16周第17周第18周第19周第20周课题调研、文献检索根据需求分析,提出总体设计方案依据选定的总体设计方案,构建详细设计方案细化详细设计方案,编写各模块代码对软件进行测试,修改定型整理各阶段的设计记录文档,撰写毕业论文完成日期2014年1月12日答辩日期2014年2月底四、主要参考文献、资料、设备和实习地点及翻译工作量设备网络、网络实验室所有网络资源,包括网络设备、工作站、网络软件等。实习地点网络、网络实验室,和学生自己考察的外部地点相结合。翻译工作量对论文标题、关键字、摘要进行英文翻译。参考文献1计算机网络(4版)M谢希仁,电子工业出版社,北京,2004年7月2JSP网络编程技术与实践李建刚秦兴桥郑雨贝清华大学出版社3揭秘J2EE项目开发的70个问题孟劼苏威人民邮电大学出版社4数据库系统概论(第三版)萨师煊王姗高等教育出版社注本任务书要求一式两份,一份系部留存,一份报教务处实践教学科。摘要随着INTERNET的快速发展,互联网已成为人们快速获取、发布和传递信息的重要渠道,显然它已成为社会生活的一部分。但我国的城市公交信息查询却还处于比较落后的水平上,广大的市民获取路线信息方式也比较少,最常用的方式只局限在询问和交通地图上。而城市公交查询系统就是使人们能够在因特网上方便、简单的查询出各条路线,了解自己所经过的每个站点等信息,以便能更好的制定自己的行动计划而设计的。它主要实现的模块是公交信息的查询模块,其中包括的功能有线路查询、站点查询、站站查询、车站查询;而系统管理模块主要实现的是对各个数据表进行添加、编辑、删除等功能操作。城市公交查询系统开发技术采用的是基于JAVA的B/S架构,它选用HIBERNATE,SPRING,STRUTS为主要的编程框架,后台选用了JAVA编程语言。用JAVA编程的最大好处在于跨越平台,可以应用于WINDOWS和LINUX操作系统。数据库选用的是MYSQL,而应用程序通过HIBERNATE与MYSQL数据库建立链接,并且运用SQL语言实现对其数据库进行操作。在此系统中,大量采用了存储过程和查询语句来对数据库进行操作,同时也涉及到查询的算法。关键词互联网;JAVA;SSH;面向对象设计方法ABSTRACTWITHTHERAPIDDEVELOPMENTOFINTERNET,THEINTERNETHASBECOMEANIMPORTANTCHANNELOFPEOPLEACQUIRING,PUBLISHINGANDTRANSMITTINGINFORMATIONANDOBVIOUSLYBECOMEONEPARTOFSOCIALLIFEBUTCHINASTECHNOLOGYOFURBANPUBLICTRANSPORTINFORMATIONINQUIRYISSTILLINARELATIVELYBACKWARDLEVELTHENUMEROUSCITIZENSHAVEALITTLEACCESSTOACQUIRETHEINFORMATIONABOUTBUSLINESTHEMOSTCOMMONWAYSARECONFINEDTOTRAFFICMAPSORTHEREFERENCETOSTRANGERANDTHEURBANPUBLICTRANSPORTSYSTEMISDESIGNEDFORPEOPLETOINQUIREOFALLLINESINTHEINTERNETCONVENIENTLYANDSIMPLYANDGETTOKNOWEVERYSITETHATTHEYPASSEDAWAYINORDERTOMAKETHEIRPLANSMOREEFFICIENTLYTHEMAINMODULEOFTHISSYSTEMISTHEBUSINFORMATIONQUERYMODULEITSFUNCTIONSINCLUDELINEINQUIRY,SITEINQUIRY,STATIONTOSTATIONINQUIRYANDSTATIONINQUIRYTHESYSTEMMANAGEMENTMODULEMAINLYREALIZESTHEFUNCTIONALOPERATIONONADDING,EDITING,DELETINGOFALLDATATABLESANDRESPONSESTOTHEMESSAGECORRESPONDINGLYTHEDEVELOPMENTTECHNOLOGYOFTHECITYBUSINQUIRYSYSTEMADOPTB/SFRAMEWORKBASEDONJAVAITSFRONTENDPARTUSESJSPASTHEMAJORFRAMEWORKTHEJSPFILECONTAINSHTMLTEXTANDCONTROLSWHICHMAKEUPOFUSERINTERFACETHEBACKENDCHOOSESJAVAASITSPROGRAMMINGLANGUAGETHEGREATESTBENEFITOFCHOOSINGJAVATOPROGRAMMINGISTHEEASYTOCROSSANYPLATFORMDATABASEUSESTHESQLSERVER2000,ANDTHEAPPLICATIONACCESSESTHEDATABASEBYHIBERNATEANDUSESSQLLANGUAGETOOPERATETHEDATABASETHESTOREDPROCEDUREISUSEDALOTTOOPERATETHEDATABASEINTHESYSTEMKEYWORDSINTERNETJAVASSHOBJECTORIENTEDDESIGNMETHODS目录摘要IABSTRACTII1绪论111城市公交查询系统的前景112城市公交查询系统的作用12公交查询系统开发方案321表现层技术JSP322MVC框架的使用323SPRING框架424HIBERNATE的作用425MYSQL43城市公交车查询系统总体设计531需求分析532总体设计5321系统功能描述5322系统功能模块划分5323系统流程设计6324系统ER图94数据库结构设计与实现1141数据库的需求分析1142数据库表的创建115系统的详细设计1351数据库1352HIBERNATE持久层13521设计持久化对象(PO)13522创建持久化类13523映射持久化类1353DAO层的实现15531DAO组件的定义16532DAO组件的实现18533部署DAO层2554实现SERVICE层3055实现WEB层30551登陆模块30552管理模块34553查询模块356结论3761工作总结3762工作展望37致谢38参考文献391绪论当今是一个以网络为中心的信息化世界,计算机已成为广大市民不可缺少的工具。由于我国城市化进程的推进,目前城市不断地在向郊区延伸,边缘不断扩大,和郊区的边界甚至开始变得模糊化,城市公交路线不断地增多,加之众多公交路线时常调整,目前众多市民,特别是一些大中型城市的市民,对各条公交路线的信息不清楚或掌握得不准确。并且当今各大城市的家庭轿车相继增多,使城市交通出现拥堵现象。而公共交通与其它交通方式相比具有人均占用道路少、能源消耗低、运输成本低、污染相对较小、客运量大,运送效率高等优点,它是解决大、中城市交通拥堵等交通问题,所以各大城市都在积极地发展公共交通的运用。本毕业设计主要的目的就是实现公交查询以及信息发布。本设计的预期成果是此系统能够使用户简单的查询出他们自己想要的车次经过哪些站点,在哪一站可以转乘,然后继续换乘哪路车;也可以预先知道可以通过哪些车次可以到达目的地。11城市公交查询系统的前景近十几年来,我国汽车工业蓬勃发展,特别是家用轿车的增长。发展中国家用轿车市场,其规模与速度必须与城市基础建设同步,如果一味追求发展速度,势必将造成很多大城市严重的交通堵塞问题,而且还将给社会带来一系列不良后果,如加大社会经济成本,增加能源消耗,恶化城市空气,增加交通事故等等。因此,在发展我国的汽车工业的同时要注意到城市公共交通存在的意义和作用,加大国家在公共交通方面的投入,全面规划、统筹安排、合理配置、科学管理,使城市道路流畅、方便、安全、有效、可靠。然而,随着公共交通的快速发展,会逐渐地出现越来越多的公共汽车和不同的公交路线,这样会使人们对各条公交路线的信息掌握的不是很清楚。而城市公交查询系统主要任务就在于对各条路线的信息查询,和对整个公交线路信息进行相关的管理。使用公交查询系统人们就可以找出一条最适合于自己的线路,减少不必要的坐车时间。所以城市公交查询系统的前景非常乐观。基于城市公交查询系统与传统的城市公交查询系统有相似又有区别。相似之处在于系统的核心都是B/S架构。B/S架构是不需要专门的操作环境,在任何地方,只要能上网,就能够操作系统。不同之处在于实现的语言不同,传统的一般用的语言是ASP它的脚本语言,是不面向对象的,而基于本设计的城市公交查询系统用的语言是JAVA,是面向对象的,面向对象的编程语言最大的特色就是可以编写自己所需的数据类型。同时JAVA语言编写的系统可以跨平台,在任何操作环境下都可以运行。对于传统的城市公交查询系统他易于管理,重用性比较高。12城市公交查询系统的作用首先有条理地、清晰地呈现出城市各条线路信息。不管城市扩展得有多大,城市公交路线增加的有多少,人们都可以通过城市公交查询系统来获得各条公交路线的详细信息。其次节省时间。在日益激烈地竞争环境中,时间可以说是人们最大的资本。城市公交查询系统可以为广大的市民指出一条最适合于他们自己的公交线路,减少不必要的多做车的情况,从而节省出更多的宝贵时间计划他们自己的事。最后消除城郊市民和外来人的不安。初到一个陌生的环境,特别是一个大城市中,许多人都会感到局促不安。城市公交查询系统可以使人们了解这个城市的一些基本情况,也可以使人们能够准确地到达他们自己想要去的地方,减少不必要的坐错车的情况。2公交查询系统开发方案时至今日,JAVAEE平台在企业开发中目前占据这绝对的优势,JAVAEE应用以其性能稳定、良好的开放性及严格的安全性,同时能够跨越操作平台,不受系统平台的限制,这成为大多商家和企业WEB开发的首选。2006年,SUN提出JAVAEE的概念,与之同步出现了两个主要的规范JSF12和EJB30。但其应用不如SSH(STRUTSSPRINGHIBERNATE)组合广泛,SSH组合是一种轻量级的JAVAEE平台,具有高度的实用性、可扩展性和可维护性。本系统将基于STRUTS21、SPRING25和HIBERNATE32三个开源框架(简称SSH),同时还使用JSP作为表现层技术。这样将三大框架和表现层紧密的结合起来,使系统的基本功能得到基本的实现。三大框架(SSH)采用的事分层的思想,并为每个层次提供一个整合框架以供支持,从而隔离各层次间的依赖性,便于系统的扩充。软件架构从总体分成6个逻辑层,自顶向下依次是视图层、控制器层、业务逻辑层、数据访问对象层、领域对象层和数据源层。框架结构如图21所示。21表现层技术JSP此系统使用JSP技术作为表现层,主要是负责收集用户的所有请求数据,和业务数据的表示。JSP是传统的有效的表现层技术。可以对系统的请求数据进行动态的表示,此系统的JSP页面仅限于表现层,并未结合JAVA脚本进行页面功能的强化。结合STRUTS21的表现层标签,JSP可完成全部的表现层功能数据收集、数据表示和输入数据校验。22MVC框架的使用本系统使用STRUTS21作为MVC框架。STRUTS21以STRUTS1X和WEBWORK为基础。本应用的所有用户请求,不以传统方式直接发送到表现层JSP页面,而是先发送给STRUTS21的ACTION,并由STRUTS21控制所有请求的处理和转发。通过STRUTS21拦截请求的优势将所有的JSP页面放入WEBINF路径下,从而避免用户直接访问JSP页面,从而提高系统的安全性。用户界面负责业务数据收集呈现系统状态MVC框架控制器负责用户请求和业务逻辑组件的交互业务逻辑层负责实现系统的业务逻辑功能DAO层通过操作领域对象来操作持久层数据领域对象处于HIBERNATESESSION管理之下,映射到对应数据表SPRING容器数据持久化服务负责持久化保存应用状态视图层(JSP)控制器层(STRUTS)业务逻辑层数据访问对象层领域对象层数据库层(MYSQL)图21系统框架结图23SPRING框架SPRING框架是系统的核心,SPRING提供的IOC容器是业务逻辑组件和DAO组件的工厂,它负责生产和管理这些实例。由SPRING依赖注入,各个组件之间低耦合性的方式组合在一起,各个组件之间的依赖是通过SPRING的依赖注入管理。SERVICE组件和DAO组件采用的是面向接口编程的方式,降低了系统重构的成本,从而提高了系统的可维护性、可修改性。本系统所有的DAO组件都继承HIBERNATEDAOSUPPORT基类,基于SPRING的IOC容器和DAO支持,不需要管理HIBERNATE的SESSIONFACTORY等对象,直接使用SPRING提供的HIBERNATETEMPLATE即可完成数据库操作。应用事务采用SPRING的声明式事务框架。通过声明式事务,事务策略以硬编码的方式无须再将代码耦合在一起,而是放在配置文件中声明,使业务逻辑组件可以更加专注于业务的实现,从而简化开发。同时也降低了不同事务策略的切换风险。24HIBERNATE的作用HIBERNATE框架的使用,简化了数据库的访问,在JDBC层上提供了更好的封装,使数据更具有封装性,提高了数据的安全性。以面向对象的方式操作数据库,更加符合面向对象程序设计的思路。HIBERNATE以灵活的方式操作数据库,无需再编写繁琐的SQL语句,执行冗长的多表查询,而是通过对象与对象之间的关联来操作数据库,支持实现DAO的功能。25MYSQLMYSQL是一个关系型数据库管理系统,由瑞典MYSQLAB公司开发,目前属于ORACLE公司。MYSQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MYSQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MYSQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MYSQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和APACHE可组成良好的开发环境。3城市公交车查询系统总体设计31需求分析在此系统中,用户可以查询城市中的各条路线或站点,了解各条路线或站点的详细信息。如果用户要查询某一条线路或站点,直接就可以用该系统相对应的功能。本系统满足了以下几个要求操作的简易性城市公交查询系统使用起来简单、方便、界面友好,用户操作起来得心应手。系统功能在该系统中,主要提供了以下几种功能查询车站信息、车次信息、站点信息和站站信息功能,信息留言和系统管理功能。如在查询功能中,用户输入要查询的车次等信息即可得出与它相关的结果;在系统管理功能中,管理员可以对其信息进行添加、修改、删除和查找等操作。32总体设计321系统功能描述在用户进入主界面后,就可以通过路线查询、站点查询、站站查询功能快速的查询出自己想知道的路线图,并且系统予以分析具体的到达方式,以便用户精准快速的到达目的地。当管理员进入系统后,可以对数据库中的信息进行添加、删除和修改和查询等操作。322系统功能模块划分在了解了系统的功能需求后,可以把该系统划分为以下2个模块用户查询模块、和系统管理模块如图31。公交车查询系统系统管理平台用户查询平台路线添加功能路线删除路线信息修改路线查询功能站点添加功能站点删除功能站点信息修改该站点查询功能路线查询功能站点查询功能站站查询功能图31城市公交查询系统功能模块下面对各个模块进行描述1、用户查询模块在用户查询模块中,主要是查询出用户自己所需要的线路信息,这也是整个系统最主要的功能模块。主要包括1查询路线信息输入要查询的路线进行搜索,可以查询出于它相应的站点名称。2查询站点信息输入要查询的站点进行搜索,可以查询出经过此站点的路线。3查询站站信息输入要查询的起始站和终点站进行搜索,可以查询出于它相应的乘车路线,同时系统予以匹配各个路线的经过站点情况,筛选出最近路线。2、系统管理模块在系统管理模块中,主要是对数据库中的各个表进行管理。主要包括1管理员登录。2站点、路线管理可以对站点、路线基本信息进行添加、删除、查询和更改等操作。而且它们各自都含有一个搜索引擎,这样可以快速的查询出你想要修改的站点或路线等信息。323系统流程设计在城市公交查询系统中,其核心内容就是公交查询的实现。在此系统中,即实现用户查询模块中的各个功能信息。其中包括路线查询、站点查询、站站查询功能。此系统中,用户不需要注册就可以直接进行相关功能的查询。1其中站站查询是此系统中最重要的功能。流程如图32所示。开始查询输入起始站名称输入结束站点名称系统查询相关路线提示没有相关路线是否有路线到达提取路线信息是否退出系统重新查询图32站站查询功能流程图2)按照站点查询所经过此站点的路线功能,如图所示32所示输入站点名称查询是否有经过路线列出所有经过的路线提示没有经过次站的路线是否退出系统是否重新查询否是否继续查询否是是图33按站点查询功能流程图2按照路线查询功能如图34所示输入路线名称查询是否有此路线显示此路线经过站点提示没有相关路线是否是否继续查询退出系统否是是图34按路线查询功能流程图在查询功能的同时,系统管理员也可以进行正常的系统维护,从而适应事务的正常改变,这包括系统对路线及站点的增加,删除和更改。3管理员对站点信息的增加、删除和修改功能图35管理员登陆对站点维护操作内容增加,删除,修改添加需要增加的站点名输入所需修改的站点名称显示所有站点增加修改删除添加成功是否继续对站点维护是修改站点信息修改完毕是否继续维护是选择需要删除的站点删除是否继续维护是结束图35站点维护功能流程图4管理员对路线功能进行维护如图36对路线维护操作内容增加,删除,修改输入添加路线名称输入所需修改该的路线名显示全部路线增加修改删除添加添加路线吃否存在添加路线经过站点否管理员登陆提示所添加站点已经存在重新添加路线添加成功是否继续添加路线继续添加是否对路线信息进行修改否修改经过站点信息重新添加所经过站点添加成功是否继续修维护继续修改是否继续修改路线信息否继续修改选择需要删除的路线删除删除成功是否继续删除是否继续维护退出系统否否否退出系统图36路线维护流程图324系统ER图针对城市公交查询系统的需求,设计如下面所示的数据项和数据结构(1)管理员基本信息(如图37)包括管理员ID,管理员名,管理员秘码。(3)路线基本信息(如图38)包括路线ID,路线名称(4)站点基本信息(如图39)包括站点ID,站点名(5)站点路线信息(如图310)包括站点路线ID,站点名,路线名,站点在路线中的位置。管理员表管理员ID管理员名管理员密码图37管理员基本信息ER图路线表路线ID路线名称图38路线基本信息ER图站点表站点ID站点名称图39站点基本信息ER图站点路线表站点ID路线ID站点在路线中的位置站点名称站点路线ID路线名称图310站点次序信息ER图在了解了各实体之后,下面实现的是站点表、路线表、站点路线表之间的ER关系模型图。站点表与路线表之间的关系是一对多的关系,记作1M,路线表与站点表之间的关系也是一对多的关系,记作1N,如图311所示。站点路线表路线表站点表MN图311线表、站点表和站点路线表间的ER图4数据库结构设计与实现城市公交查询系统应用的是MYSQL数据库管理系统。此系统使用的数据库名称为BQS,下面具体讲解数据库中各数据表的创建。41数据库的需求分析根据公交车路线查询系统的需求,对应实体数据库表的设计及作用如下1、站点表STOP主要存储站点信息2、路线表ROUTE主要存储路线信息3、站点路线表STOPROUTE存储站点信息,路线信息,从而将站点和路线对应4、管理员表ADMIN存储管理员账号及密码42数据库表的创建该系统中共需要创建五个数据表管理员表、留言簿表、车次基本信息表、站点基本信息表、站点次序表。(1)管理员表ADMIN此表包括三个字段一个是管理员标志ADMINID字段,该字段时ADMIN表的主键;另外两个分别是管理员名和管理员密码。其详细信息如表41所示。表41ADMIN表列名数据类型长度是否为空说明ADMINIDINT4NOTNULL管理员编号(主键)ADNAMEVARCHAR15NOTNULL管理员名ADPWDVARCHAR15NOTNULL管理员密码(2)站点表STOP此表包括2个字段其中STOPID字段为表的主键,NAME为站点名称。其详细信息如表42所示。表42STOP表列名数据类型长度是否为空说明STOPIDINT4NOTNULL站点编号(主键)NAMEVARCHAR50NULL站点名称(3)路线表ROUTE此表包括2个字段其中ROUTEID字段为ROUTE表的主键,NAME为路线的名称其详细信息如表43所示。表43LINE表列名数据类型长度是否为空说明ROUTEIDINT4NOTNULL路线编号(主键)NAMEVARCHAR50NOTNULL路线名(4)站点路线表STOPROUTE此表包括6个字段其中STOPROUTEID字段为STOPROUTE表的主键,另外5个分别为站点名和路线名;站点ID和路线ID;站点在路线中的位置。其详细信息如表44所示。表44STOPROUTE表列名数据类型长度是否为空说明STOPROUTE_IDINT4NOTNULL站点路线编号(主键)STOP_NAMEVARCHAR50NOTNULL站点名ROUTE_NAMEVARCHAR50NOTNULL路线名STOP_POSATIONINT4NOTNULL站点在路线中的位置STOP_IDINT4NOTNULL外键ROUTE_IDINT4NOTNULL外键5系统的详细设计51数据库目前应用开发中,数据库系统常见的主要有ORACLE、SQLSERVER、DB2和MYSQL。本系统考虑到技术的成熟性、技术应用搭配的惯例以及系统的规模等因素,数据库系统采用MYSQL数据库系统进行数据的存储服务。具体表结构定义在第四章已给出,这里不再赘述。52HIBERNATE持久层通过使用HIBERNATE持久层,可以避免使用传统的JDBC方式操作数据库,通过利用HIBERNATE提供的O/RMAPPING支持,从而允许使用面向对象的方式操作关系数据库,保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、面向对象设计、面向对象编程。521设计持久化对象(PO)面向对象分析,是指根据系统需求提取应用中的对象,将这些对象抽象成类,再抽取出需要持久化保存的类,这些需要持久化保存的类就是持久化对象(PO)。本系统完全从面向对象分析开始,设计了如下持久化类1ROUTE类对应系统中的路线信息,包含路线名称2STOP类对应系统中的站点信息,包含站点名称3STOPROUTE类对应系统中的站点路线信息,将站点和路线关联起来可观世界中的对象不是孤立存在的,以上3个PO类也不是孤立存在的,它们之间存在着复杂的关联关系。分析关联关系是面向对象分析的必要步骤,也是HIBERNATE进行持久化操作的必经之路。以上3个PO之间的关联关系如下1ROUTE和STOP之间存在一对多的关系,即一条路线对应多个站点2STOP和ROUTE之间存在一对多的关系,即一个站点对应多个路线3STOPROUTE和STOP之间存在多对一的关系4STOPROUTE和ROUTE之间存在多对一的关系522创建持久化类持久化对象之间的关联关系以属性的方式表现出来,这些属性要以SETTER和GETTER方法的支持,持久化类之间的关联关系通常对应于数据库里的主、外键约束。除此之外,持久化对象还有自己的普通属性,这些普通属性通常对应数据库里的字段。523映射持久化类在面向对象分析的阶段中,最重要的任务就是提取类,并分析对象之间的关联关系。本系统中,对象之间的关联关系主要表现为一对一的关系。对象之间的关联关系一般通过对应的XML格式映射文件定义。1ROUTE的映射文件ROUTEHBMXML(映射在文件夹SRC目录下的一个XML文件夹中)2STOP的映射文件STOPHBMXML(映射在文件SRC目录下面的XML文件夹下面)3STOPROUTE映射文件STOPROUTEHBMXML53DAO层的实现在HIBERNATE持久层之上,可以使用DAO组件再次封装数据库操作,这也是JAVAEE应用里常用的DAO模式。当使用DAO模式时,既体现了业务逻辑组件封装DAO组件的门面模式(设计模式),也可以分离业务逻辑组件和DAO组件的功能业务逻辑组件负责业务逻辑的变化,而DAO组件负责持久化技术的变化。引入DAO模式后,每个DAO组件包含了数据库的访问逻辑;每个DAO组件可对一个数据表完成基本的CRUD等操作。DAO模式的实现至少需要如下3个部分1DAO工厂类。2DAO接口。3DAO接口的实现类。DAO模式是一个更符合软件工程的开发方式,使用DAO模式有如下理由1DAO模式抽象出数据访问方式,业务逻辑组件无须理会底层的数据库访问细节,而只专注于业务逻辑的实现,业务逻辑组件只负责业务功能的改变。2DAO将数据库访问集中在独立的一层,所有的数据访问都由DAO对象完成,这层独立的DAO分离了数据访问的实现与其他业务逻辑,使得系统更具有可维护性。3DAO还有助于提升系统的可移植性。独立的DAO层使得系统能在不同的数据库之间轻易切换,底层的数据库实现对于业务逻辑组件是透明的。数据库移植时仅仅影响DAO层,不同数据库的切换不会影响业务逻辑组件,因此提高了系统的可复用性。4对于不同的持久层技术,SPRING的DAO提供了一个DAO模板,将通用的操作放在模板里完成,而对于特定的操作,则通过回调接口完成。SPRING为HIBERNATE提供的DAO支持类是HIBERNATEDAOSUPPORT531DAO组件的定义DAO组件提供了各个持久化对象基本的CRUD操作。而在DAO接口里对DAO组件包含的各种CRUD方法提供了声明。使用DAO接口的原因是为了避免业务逻辑组件与特定的DAO组件的耦合。由于DAO组件中的方法不是一开始就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法一般是通用的1GETSERIALIZABLEID根据主键加载持久化实例。2SAVEOBJECTENTITY保存持久化实例。3UPDATEOBJECTENTITY更新持久化实例。4DELETEOBJECTENTITY删除持久化实例。5DELETESERIALIZABLEID根据主键删除持久化实例。6FINDALL获取数据表中全部的持久化实例。以下是本系统中部分DAO接口的源代码/IROUTEDAO对应文件为IROUTEDAOJAVA/PACKAGECNCOMBQSDAOIMPORTJAVAUTILLISTIMPORTCNCOMBQSENTITYROUTEPUBLICINTERFACEIROUTEDAO/增加一条路线VOIDADDROUTEROUTEROUTE/删除一条路线VOIDDELETEROUTEROUTEROUTE/修改路线信息VOIDUPDATEROUTEROUTEROUTE/根据路线名查出路线信息ROUTEFINDBYROUTENAMESTRINGROUTENAME/查出所有路线LISTFINDALL/ISTOPDAO对应文件为ISTOPDAOJAVA/PACKAGECNCOMBQSDAOIMPORTJAVAUTILLISTIMPORTCNCOMBQSENTITYSTOPPUBLICINTERFACEISTOPDAO/增加一个站点VOIDADDSTOPSTOPSTOP/删除一个站点VOIDDELETESTOPSTOPSTOP/修改站点信息VOIDUPDATESTOPSTOPSTOP/根据站点名查出站点信息STOPFINDBYSTOPNAMESTRINGSTOPNAME/查出所有站点LISTFINDALL/ISTOPROUTEDAO对应文件为ISTOPROUTEDAOJAVA/PACKAGECNCOMBQSDAOIMPORTJAVAUTILLISTIMPORTCNCOMBQSENTITYSTOPROUTEPUBLICINTERFACEISTOPROUTEDAO/增加一条站点信息VOIDADDSTOPROUTESTOPROUTESTOPROUTE/删除一条站点信息VOIDDELETESTOPROUTESTOPROUTESTOPROUTE/修改一条站点信息VOIDUPDATESTOPROUTESTOPROUTESTOPROUTE/根据站点名查出站点在路线中的信息LISTFINDBYSTOPNAMESTRINGSTOPNAME/根据路线路查出站点在路线中的信息LISTFINDBYROUTENAMESTRINGROUTENAME/根据路线和站点名查出一条路线站点对应信息STOPROUTEFINDBYSTOPANDROUTENAMESTRINGSTOPNAME,STRINGROUTENAME532DAO组件的实现借助于SPRING的DAO支持,可以很方便地为DAO组件提供实现类,SPRING为各种常用的持久化技术都提供了很好的支持,如为JDBC持久化技术提供了JDBCDAOSUPPORT。SPRING为HIBERNATE提供的DAO基类是HIBERNATEDAOSUPPORT,该类只需要传入一个SESSIONFACTORY引用,即可得到一个HIBERNATETEMPLATE实例,HIBERNATETEMPLATE的功能非常强大,可以很容易实现数据库的大部分操作。3应用开发中,DAO的实现类都要继承HIBERNATEDAOSUPPORT基类,并实现相应的DAO接口,而业务逻辑对象则面向接口编程,无须关心DAO的实现细节。通过这种方式,就可以让应用程序在不同的持久化技术之间自由切换。1ROUTEDAO接口的实现类代码如下(对应文件名为ROUTEDAOIMPLJAVA)PACKAGECNCOMBQSDAOIMPLIMPORTJAVAUTILLISTIMPORTORGSPRINGFRAMEWORKORMHIBERNATE3HIBERNATETEMPLATEIMPORTCNCOMBQSDAOIROUTEDAOIMPORTCNCOMBQSENTITYROUTEPUBLICCLASSROUTEDAOIMPLIMPLEMENTSIROUTEDAOPRIVATEHIBERNATETEMPLATEHIBERNATETEMPLATEPUBLICHIBERNATETEMPLATEGETHIBERNATETEMPLATERETURNHIBERNATETEMPLATEPUBLICVOIDSETHIBERNATETEMPLATEHIBERNATETEMPLATEHIBERNATETEMPLATETHISHIBERNATETEMPLATEHIBERNATETEMPLATEPUBLICVOIDADDROUTEROUTEROUTEHIBERNATETEMPLATESAVEROUTEPUBLICVOIDDELETEROUTEROUTEROUTEHIBERNATETEMPLATEDELETEROUTEPUBLICLISTFINDALLRETURNHIBERNATETEMPLATEFIND“FROMROUTE“PUBLICROUTEFINDBYROUTENAMESTRINGROUTENAMESTRINGHQL“SELECTROUTEFROMROUTEROUTEWHEREROUTEROUTENAMEROUTENAME“ROUTEROUTENULLROUTEROUTEHIBERNATETEMPLATEFINDBYNAMEDPARAMHQL,NEWSTRING“ROUTENAME“,NEWOBJECTROUTENAMEGET0RETURNROUTEPUBLICVOIDUPDATEROUTEROUTEROUTEHIBERNATETEMPLATEUPDATEROUTE2STOPDAO接口的实现类代码如下(对应文件名为STOPDAOIMPLJAVA)PACKAGECNCOMBQSDAOIMPLIMPORTJAVAUTILARRAYLISTIMPORTJAVAUTILLISTIMPORTORGHIBERNATEHIBERNATEIMPORTORGSPRINGFRAMEWORKORMHIBERNATE3HIBERNATETEMPLATEIMPORTCNCOMBQSDAOISTOPDAOIMPORTCNCOMBQSENTITYROUTEIMPORTCNCOMBQSENTITYSTOPPUBLICCLASSSTOPDAOIMPLIMPLEMENTSISTOPDAOPRIVATEHIBERNATETEMPLATEHIBERNATETEMPLATEPUBLICHIBERNATETEMPLATEGETHIBERNATETEMPLATERETURNHIBERNATETEMPLATEPUBLICVOIDSETHIBERNATETEMPLATEHIBERNATETEMPLATEHIBERNATETEMPLATETHISHIBERNATETEMPLATEHIBERNATETEMPLATEPUBLICVOIDADDSTOPSTOPSTOPHIBERNATETEMPLATESAVESTOPPUBLICVOIDDELETESTOPSTOPSTOPHIBERNATETEMPLATEDELETESTOPPUBLICLISTFINDALLRETURNHIBERNATETEMPLATEFIND“FROMSTOP“PUBLICSTOPFINDBYSTOPNAMESTRINGSTOPNAMESTRINGHQL“SELECTSTOPFROMSTOPSTOPWHERESTOPSTOPNAMESTOPNAME“STOPSTOPNULLLISTSTOPLISTNEWARRAYLISTSTOPLISTADDALLHIBERNATETEMPLATEFINDBYNAMEDPARAMHQL,NEWSTRING“STOPNAME“,NEWOBJECTSTOPNAMEIFSTOPLISTSIZE0RETURNNULLELSEFORSTOPSTOP2STOPLISTHIBERNATEINITIALIZESTOP2GETSTOPROUTESRETURNSTOPLISTGET0/STRINGHQL“SELECTSTOPFROMSTOPSTOPWHERESTOPSTOPNAMESTOPNAME“/STOPSTOPNULL/STOPSTOPHIBERNATETEMPLATEFINDBYNAMEDPARAMHQL,NEWSTRING“STOPNAME“,NEWOBJECTSTOPNAMEGET0/RETURNSTOPPUBLICVOIDUPDATESTOPSTOPSTOPHIBERNATETEMPLATEUPDATESTOP3STOPDAO接口的实现类代码如下(对应文件名为STOPDAOIMPLJAVA)PACKAGECNCOMBQSDAOIMPLIMPORTJAVAUTILARRAYLISTIMPORTJAVAUTILLISTIMPORTORGHIBERNATEHIBERNATEIMPORTORGSPRINGFRAMEWORKORMHIBERNATE3HIBERNATETEMPLATEIMPORTCNCOMBQSDAOISTOPROUTEDAOIMPORTCNCOMBQSENTITYSTOPROUTEPUBLICCLASSSTOPROUTEDAOIMPLIMPLEMENTSISTOPROUTEDAOPRIVATEHIBERNATETEMPLATEHIBERNATETEMPLATEPUBLICHIBERNATETEMPLATEGETHIBERNATETEMPLATERETURNHIBERNATETEMPLATEPUBLICVOIDSETHIBERNATETEMPLATEHIBERNATETEMPLATEHIBERNATETEMPLATETHISHIBERNATETEMPLATEHIBERNATETEMPLATEPUBLICVOIDADDSTOPROUTESTOPROUTESTOPROUTEHIBERNATETEMPLATESAVESTOPROUTEPUBLICVOIDDELETESTOPROUTESTOPROUTESTOPROUTEHIBERNATETEMPLATEDELETESTOPROUTEPUBLICLISTFINDBYROUTENAMESTRINGROUTENAMELISTSTOPROUTELISTNEWARRAYLISTSTOPROUTELISTHIBERNATETEMPLATEFIND“SELECTSTOPROUTEFROMSTOPROUTESTOPROUTEWHERESTOPROUTEROUTENAME“,ROUTENAMEFORSTOPROUTESTOPROUTESTOPROUTELISTHIBERNATEINITIALIZESTOPROUTEGETSTOPHIBERNATEINITIALIZESTOPROUTEGETROUTERETURNSTOPROUTELISTPUBLICLISTFINDBYSTOPNAMESTRINGSTOPNAMELISTSTOPROUTELISTNEWARRAYLISTSTOPROUTELISTHIBERNATETEMPLATEFIND“SELECTSTOPROUTEFROMSTOPROUTESTOPROUTEWHERESTOPROUTESTOPNAME“,STOPNAMEFORSTOPROUTESTOPROUTESTOPROUTELISTHIBERNATEINITIALIZESTOPROUTEGETSTOPHIBERNATEINITIALIZESTOPROUTEGETROUTERETURNSTOPROUTELISTPUBLICVOIDUPDATESTOPROUTESTOPROUTESTOPROUTEHIBERNATETEMPLATEUPDATESTOPROUTEPUBLICSTOPROUTEFINDBYSTOPANDROUTENAMESTRINGSTOPNAME,STRINGROUTENAMESTOPROUTESTOPROUTENULLSTRINGHQL“SELECTSTOPROUTEFROMSTOPROUTESTOPROUTEWHERESTOPROUTESTOPNAMESTOPNAMEANDSTOPROUTEROUTENAMEROUTENAME“STOPROUTESTOPROUTEHIBERNATETEMPLATEFINDBYNAMEDPARAMHQL,NEWSTRING“STOPNAME“,“ROUTENAME“,NEWOBJECTSTOPNAME,ROUTENAMEGET0RETURNSTOPROUTE533部署DAO层1、DAO组件的运行基础本应用系统中的DAO组件以HIBERNATE和SPRING为基础,由SPRING容器负责生成并管理DAO组件。SPRING容器负责为DAO组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论