为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于Hibernate技术的设备管理系统开发

2018-05-16 4页 doc 834KB 20阅读

用户头像 个人认证

满天星0822

暂无简介

举报
基于Hibernate技术的设备管理系统开发 毕业设计(论文)设计(论文)题目:基于Hibernate技术的EquipmentManagementSystem开发 学生姓名 学生学号 专业班级 指导老师 院长(系主任) 5月25日 基于Hibernate技术的EquipmentManagementSystem开发摘要公司规模的不断扩大令行政部的管理工作日益繁重,所以其迫切需要开发一个MIS(ManagementInformationSystem)系统来使其行政管理规范化、制度化、所需各种数据标准化。在大型系统的开发过程中,使用Hibernate作为业务逻辑层...
基于Hibernate技术的设备管理系统开发
毕业设计(论文)设计(论文)题目:基于Hibernate技术的EquipmentManagementSystem开发 学生姓名 学生学号 专业班级 指导老师 院长(系主任) 5月25日 基于Hibernate技术的EquipmentManagementSystem开发摘要公司规模的不断扩大令行政部的管理工作日益繁重,所以其迫切需要开发一个MIS(ManagementInformationSystem)系统来使其行政管理化、制度化、所需各种数据化。在大型系统的开发过程中,使用Hibernate作为业务逻辑层和数据库层之间的持久层,实现对象到关系数据库的持久存储,不但解决了对象模型与关系模型之间的“阻抗不匹配”问题,也提高了项目开发的效率。所以,某公司决定开发基于Hibernate技术的EquipmentManagementSystem。Hibernate是目前最流行的开源对象关系映射框架,是面向对象的程序设计语言和关系数据库之间的桥梁。它对JDBC作了轻量级的封装,不仅提供ORM映射服务,还提供数据查询和数据缓存功能。作为优秀的持久层框架实现,Hibernate提供了强大、高性能的对象到关系数据库的持久化服务,其良好的持久层映射机制,使得操作完全面向对象。本文研究了Hibernate技术,分析了Hibernate的对象关系映射框架实现机制及其工作原理。最后,结合实践,介绍了基于Hibernate技术的EquipmentManagementSystem的开发。关键词:Hibernate,持久化,对象关系映射Hibernate–BasedEquipmentManagementSystemDevelopmentAbstractWiththecompanyexpandingthescale,theworkloadofAdministrationDepartmentisincreasing.SotheirurgentneedistodevelopaMIS(ManagementInformationSystem),whichmakestheadministrationtobestandardizationandinstitutionalization.Intheprocessoflargesystemsdevelopment,itusesHibernatebetweenbusinesslogiclayeranddatabaselayerasthepersistencelayer,implementingthepersistentstorefromobjectstorelationshipdatabase.Itsolvestheimpedancemismatchdifficultiesbetweentheobjectmodelandtherelationshipmodel,andimprovestheefficiencyoftheprojectdevelopment.Therefore,thecompanydecidestodevelopEquipmentManagementSystemofHibernate-based.Hibernateisthemostpopularopensourceobject-relationalmappingframework,andalsoabridgebetweentheobject-orientedprogramminglanguageandtherelationaldatabase.ItmakesJDBCalightweightpackage.And,itnotonlyprovidesORMmappingservices,butalsoprovidesdataqueryanddatacachefunction.Asagoodframeworkforachievingpersistencelayer,Hibernateprovidesapowerful,high-performancepersistenceservicefromobjectstotherelationaldatabase.Itsgoodmechanismforpersistencemappingmakesoperationsobject-orientedfully.Inthispaper,someresearchhasbeendoneontheHibernatetechnology,andalsoanalysisobject-relationalmappingframeworkfortherealizingmechanismoftheHibernateanditsworkingprinciples.Finally,accordingtopractices,itintroducesthedevelopmentofEquipmentManagementSystem,whichisbasedonHibernatetechnology.KeyWords:Hibernate,Persistence,ObjectRelationMapping 目录1绪论 11.1问题的提出 11.2技术背景 21.3课题研究的意义 31.4论文的组织结构 32MVC设计模式 52.1MVC框架 52.2MVC的处理过程 62.3MVC模式的优点 63Hibernate持久框架介绍 83.1ORM简介 83.2Hibernate持久框架概述 83.3利用Hibernate持久化Java类 93.3.1对象持久化的定义 93.3.2Hibernate的优点 113.3.3Hibernate持久化步骤 124EquipmentManagementSystem的构建 144.1需求分析 144.1.1项目来源 144.1.2项目目标 144.1.3系统模型 154.1.4功能需求 154.1.5用例分析 184.1.6数据字典 204.1.7性能需求 204.2基于Hibernate的系统设计 214.2.1系统特点 214.2.2设计要求 214.2.3基于Hibernate的系统设计 224.3基于Hibernate的系统实现 234.3.1环境配置 234.3.2数据持久层的实现 244.3.3系统运行效果 274.4系统测试 295总结与展望 30致谢 31参考文献 32 1绪论1.1问题的提出公司规模的不断扩大,作为管理职能部门之一的行政部,其日常管理工作也随之增加,各业务部门办公资源的领用、会议室预订等工作量较大的事务占据了大量的时间。行政部门迫切需要通过信息化的建设,来辅助行政管理规范化、制度化,并使行政管理所需各种数据标准化,为行政管理提供各种数据分析支持。当前的软件开发已经全面转向面向对象。数据库系统中的关系数据库仍然很受欢迎。面对复杂的企业环境,同时使用面向对象语言和关系数据库是不方便开发的。并且,当采用Java作为Web应用的开发语言时,传统的方法是直接通过JDBCAPI与数据库进行交互。这个工作量很大,而且一旦业务逻辑稍微有一些变更,就要大量地更改这些JDBC中的SQL语句,因此不管是开发还是维护系统都很不方便。于是,在此系统中,在业务逻辑层和数据库层之间增加了一个持久层,专门负责实现对象和关系数据库之间的映射,完成将对象作为永久信息存储和访问,即对象的持久化工作。目前在持久层领域,已经出现了许多优秀的对象-关系映射框架,有的是商业性的,有的是开放源代码的。Hibernate就是一种越来越受欢迎的开放源代码的对象-关系映射框架。Hibernate提供了强大、高性能的对象到关系数据库的持久化服务。此外,在项目方面,此系统要达到以下要求:(1)系统必须基于B/S结构;(2)系统必须易维护、具有良好的扩展性;(3)系统必须易于改变和调整,具有良好的可移植性。基于以上理念,某公司决定开发基于Hibernate技术的EquipmentManagementSystem。1.2技术背景现今,面向对象开发技术已经普及到各种软件开发领域中。面向对象技术是一种基于类和对象的应用程序开发技术,程序员通过使用类和对象,以及对它们的继承、封装等操作,可以方便地开发出高质量的应用程序。同时,当前大多的应用程序都使用关系数据库作为数据的存储机制。而面向对象的机制与关系模型有着很大的不同,他们之间存在阻抗不匹配(ImpedanceMismatch)。面向对象设计基于软件工程的一些原理如聚集、封装等理论,其使用一组对象来完成任务;而关系模型基于数学原理,尤其是集合论的原理。因此,需要一种映射方法解决这种不匹配,对象关系映射便随之产生。把对表直接进行的操作,变成对对象的属性和方法的操作。Hibernate是一个基于Java的开放源代码的对象关系映射框架,它对JDBC做了轻量级的封装[1]。目前Hibernate已被广泛使用,作为企业应用和关系数据库之间的中间件,以减轻和对象持久化有关的大量的JDBC编程工作。Hibernate在2003年末被JBoss组织收纳,成为从属于JBoss组织的子项目之一,从而赢得了良好的发展前景。Hibernate与OJB设计思想类似,具备相近的功能和特色,但由于其更加灵活快速的发展策略,得到了广大技术人员的热情参与,因此也得到了更广泛的推崇。相对ApacheOJB迟缓的项目开发进度表,Hibernate活跃的开发团队以及各社区对其热烈的关注为其带来了极大的活力,并逐渐发展成Java持久层事实上的标准。Hibernate是目前最流行的开源ORM(Object/RelationMapping)框架,一个面向Java环境的对象-关系数据库映射工具。其采用非常优雅的方式将SQL操作完全包装成对象化的操作,所以Hibernate允许程序开发者采用面向对象的方式来操作关系数据库[2]。此外,大多数开发机构经常采取创建各自独立的数据持久层。一旦底层的数据结构发生改变,那么修改应用的其余部分使之适应这种改变的代价将是十分巨大的。Hibernate适时的填补了这一空白,它为Java应用提供了一个易用的、高效率的对象关系映射框架。更重要的是,Hibernate是个轻量级的持久性框架,功能却非常丰富。1.3课题研究的意义在EquipmentManagementSystem的研究开发过程中,采用基于MVC模式,并结合实现对象-关系映射的Hibernate技术作为系统的设计方案,适合系统规模,且具备以下意义:(1)实现快速开发.Hibernate框架是一个成熟的框架,已经在众多的系统中得到广泛应用;(2)Hibernate作为优秀的持久层框架实现,提供了强大、高性能的对象到关系型数据库的持久化服务,其良好的持久层映射机制,使得操作完全面向对象,并且降低了业务模型部分的开发难度,明显提高了开发效率。(3)低成本构建企业级应用。本系统建构过程中我们尝试使用了免费的开源软件及框架来开发企业级应用,使整个开发成本了降到最低;(4)易维护、易扩展。Hibernate的强大功能和易用性,较好地将应用系统各部分的耦合解脱开来,提高了系统的可重用性和可扩展性。而且使用Hibernate的人员会越来越多,所以系统今后比较容易维护并且可以根据业务需要进行扩展,如添加EJB功能;此外,在项目方面,本系统辅助行政管理规范化、制度化,并使行政管理所需各种数据标准化,为行政管理提供各种数据分析支持。1.4论文的组织结构本章指明了本课题的提出原因,所应用的技术,技术背景及其研究意义。第二章介绍了本系统所采用的设计模式,指出了MVC模式的框架、处理过程、优点,以及为什么在此系统开发中会使用此模式。第三章介绍了ORM的定义,对象持久化技术原理,并分析了Hibernate的对象关系映射框架实现机制及工作原理。同时,结合Hibernate的优点,指出了为什么要在本系统的开发中选择Hibernate持久框架。第四章是将上两章提出的知识应用于EquipmentManagementSystem项目的开发中,从项目的需求分析、系统设计、系统实现和系统测试四个方面,介绍了如何结合MVC模式和Hibernate技术构建一个EquipmentManagementSystem。第五章是对本论文的总结与展望。2MVC设计模式为了能提供给用户一个具有很好可移值性、可重用性、可维护性、可扩展性的良好的系统,决定本系统采用MVC设计模式。MVC是Model-View-Controller的缩写,即模型一视图一控制器。MVC是XeroxPARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今己被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,受到越来越多的Web开发者的欢迎[3].2.1MVC框架MVC是一种设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成三个核心模块:模型、视图和控制器,它们分别担负不同的任务。图2-1显示了这几个模块各自的功能以及它们的相互关系。图2.1MVC设计模式(1)视图(View)是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入数据,但是它并不能进行任何实际的业务处理。视图可以访问模型的数据,但不能改变模型中的数据。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。一个模型可以有多个视图,而一个视图理论上也可以与不同的模型关联起来。(2)模型(Model)指的是真正完成任务的代码,包含应用系统的核心功能,表示一个应用系统的数据,并且包含访问、维护和管理这些数据的逻辑。所有属于应用系统持久状态的数据都应该保存在模型的对象里,模型提供的服务必须足够适用于不同的终端。一个模型聚集了相关的数据和操作,以提供一个详细的服务,这些被封装在操作中的抽象事物的功能被模块化。一个模型的接口提供了访问和更新模型状态、执行封装在模型中的复杂进程的方法。模型服务被控制器访问,用于查询和更改模型的状态。当模型状态发生变化时,模型会通报给视图。在模型同界面分离的情况下,代码就可以实现可管理性和可重用性。模型通常也被称作业务逻辑。(3)控制器(Controller)封装的是外界作用于模型的操作,控制器接收用户的输入并调用模型和视图完成用户的请求,在模型和视图之间起到了沟通的作用。当Web用户单击页面中的提交按钮发送HTML表单时,控制器接受请求并调用相应的模型组件处理请求,然后调用相应的视图显示模型返回的数据[4].2.2MVC的处理过程MVC的处理过程为:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型根据用户请求进行相应的业务逻辑处理,并返回数据:最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。2.3MVC模式的优点使用MVC设计模式开发应用可以带来很多的好处,其优点主要表现在以下几个方面[5]:(1)设计清晰:在MVC设计模式下,应用被清晰地分为模型、视图和控制器三部分,三部分分别对应业务逻辑、用户界面、用户请求处理和数据同步。这种对应功能模块的划分有利于选择重点进行设计和编写代码,并且不同功能的代码不会混在一起,不会引起代码混乱。(2)模块设计和代码的可重用性:MVC作为模块化的体系,其中任何组件或者模块只要接口适合都不会因为本身的改变而影响其他的模块。可重用的组件降低了项目的开发成本。(3)可维护性好:由于表示层和业务层的分离,开发人员可以方便地更改表示层代码而不用重新编译模型和控制器代码,使得Web应用更易于维护和修改。(4)功能强大的用户界面:发送给模型的“标准”命令,都是由单个用户行为触发的,这样就使得程序可以选择更加清晰友好的界面呈现给客户端。(5)有利于软件工程化管理:在MVC设计模式下,开发人员分别负责各自部分,比如,软件的开发人员和网页的设计者之间就可以有明确的角色分工,这样有利于项目的管理和代码的维护。基于以上优点,EquipmentManagementSystem的开发使用了MVC设计模式。3Hibernate持久框架介绍3.1ORM简介ORM的全称是Object/RelationMapping,对象/关系映射。ORM也可理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁[6]。ORM并不是一种具体的产品,而是一类框架的总称。它概述了这类框架的基本特征:完成面向对象的程序设计语言与关系数据库的映射。基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的技术优势[7]。ORM这个术语也可以表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去[8]。ORM框架是面向对象的程序设计语言与关系数据库发展不同步时的中间解决方案。目前ORM的产品非常多,除了各大著名公司的产品外,甚至其他一些小团队也都有推出自己的ORM框架。目前流行的ORM框架有如下产品:大名鼎鼎的Hibernate,传统的EntityEJB,iBATIS,Oracle组织下的TopLink和OJB[2]。3.2Hibernate持久框架概述Hibernate是目前最流行的ORM框架,其采用非常优雅的方式将SQL操作完全包装成对象化的操作[9]。其作者GavinKing在持久层设计上极富经验,采用非常少的代码实现了整个框架,同时完全开放源代码,即使偶尔遇到无法理解的情况,也可以参照源代码来理解其在持久层上灵巧而智能的设计。Hibernate是一个功能强大的、高效率的、开源代码的O/RMapping(对象-关系映射框架),它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲地使用对象编程思想来操纵数据库[10]。使用Hibernate可以开发出遵循普通Java类规范的持久化类,如支持关联、继承、多态、聚合及Java集合[11]。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任[12]。Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间[13]。Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中95%的工作量[14]。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案。但是,对于那些在基于Java的中间层应用中,他们实现面向对象的业务模型和商业逻辑的应用,Hibernate却是最有用的。Hibernate在大多数主流J2EE应用服务器的受管理环境中都可以良好运作,Hibernate还可以和多种Web服务器或者应用服务器良好集成,如今己经支持几乎所有的流行的数据库服务器(达16种),甚至也可以在独立的Java应用程序中运行。从整个应用程序的高度看,Hibernate处于数据库与应用程序之间,为应用程序提供将对象持久化到数据库的服务。图3.1是Hibernate一个高层次的概括,它展示了Hibernate使用数据库和配置文件来为应用程序提供持久化服务,其中Hibernate使用hibernate.cfg.xml和XMLMapping两类配置文件把普通Java对象映射成关系数据库中的表[15]。3.3利用Hibernate持久化Java类那么,什么是对象持久化,为什么要选择Hibernate技术来实现持久化,这些就是我们下边要讨论的问题。3.3.1对象持久化的定义在使用面向对象技术开发应用系统时,系统运行过程中构造的对象实例,都是瞬时或暂时性的,叫作暂态对象或临时对象;他存在于内存之中,系统一旦停止运行,这些对象都将消失,信息不复存在。因此,需要将对象实例长期持久地保存,使之成为永久对象,这就是对象持久化[16]。图3.1Hibernate概括对象持久化技术是可以永久地存储对象的方法,持久化机制包括基于操作系统的文件存储、关系数据库RDB和面向对象的数据库OODB等。目前大多使用关系数据库作为对象持久化的存储机制。采用关系数据库实现对象持久化的方法主要有:内嵌SQL语句、封装成数据类以及使用对象持久层。(1)内嵌SQL语句:这种方法最为常见,它是在类的源代码中嵌入SQL语句。其优点是编码快捷,适用于小型应用程序和原型模型中;缺点是难于维护和扩展,数据库的小变化(如:列的重新命名)也会导致源代码的改写。模式图如图3.2所示。(2)封装成数据类:这种方法是将业务类里的SQL语句封装到一个或几个“数据类”里,例如存储过程和EJB的实体Bean策略。这种方法适用于40至50个类的小型系统。但是当数据库发生简单变化时,仍会导致数据类的重新编译。模式图如图3.3所示。图3.2内嵌SQL语句模式图图3.3封装成数据类的模式图(3)对象持久层:持久层是应用程序与数据库的隔离层,他封装了与数据库交互的底层细节。使用持久层时数据库的简单改变不会影响面向对象的代码。程序员只需管理和使用面向对象的数据,而不必关心数据存储的底层实现细节[17]。模式图如图3.4所示。3.3.2Hibernate的优点Hibernate能在众多的ORM框架中脱颖而出,因为Hibernate与其它ORM框架对比具有如下优势:(1)开源和免费的License,方便需要时研究源代码、改写源代码并进行功能定制;(2)轻量级封装,避免引入过多复杂的问题,调试容易,减轻程序员负担;图3.4对象持久层模式图(3)具有可扩展性,API开放。功能不够用时,可以自己编码进行扩展;(4)开发者活跃,产品有稳定的发展保障;(5)能与多种Web服务器、应用服务器良好集成,并且支持几乎所有流行的数据库服务器。这也正是本系统要基于此项技术的原因中的一部分。3.3.3Hibernate持久化步骤Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据库之间的映射.Hibernate内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤:(1)创建Hibernate的配置文件。使用Hibernate进行对象的持久化,需要一个配置文件对Hibernate进行配置和初始化。Hibernate有两种配置方式,分别是使用hibernate.properties文件和hibernate.cfg.xml文件,两种配置是一样的。在本系统开发过程中,我们使用的是hibernate.cfg.xml文件进行配置。在配置文件中,可以配置数据库的方言、连接驱动类、用户名、密码和URL等。此外,使用hibernate.cfg.xml文件进行配置时还可以指定mappingresource,写入持久化类的映射文件(类名.hbm.xm1)。(2)创建持久化类。持久化类是指其实例需要被Hibernate持久化到数据库的类,持久化类通常都是实体域类。Hibernate创建和使用的持久化对象大多是一种叫作POJO(PlainOrdinaryJavaObject)的对象,从字面上来讲就是无格式普通Java对象,可以简单地理解为一个不包含逻辑代码的值对象。持久化类必须单独定义一个主键ID,作为对象标识符。另外,一个POJO很像JavaBean,每个属性都要有与之对应的getter()和setter()方法,对外隐藏内部实现的细节。持久化类不需要实现什么特别的接口,也不需要从一个特别的持久化根类继承下来。Hibernate也不需要使用任何编译期处理,比如字节码增强操作等,它独立的使用Java反射机制。所以,在Hibernate中,POJO的类不需要任何前提条件,它们能够运行在任何一种Java环境中。(3)创建对象-关系映射文件。每个持久化类都要有与之对应的映射文件,映射文件名为“类名.hbm.xm1”。这个映射文件定义了O/R映射的规则。映射的内容包括主键ID,一般属性,继承的映射、关联的映射和组件的映射等。(4)通过HibernateAPI编写访问数据库的代码。4EquipmentManagementSystem的构建4.1需求分析4.1.1项目来源近年来,某公司的市场占有率扩大、合作伙伴增多,成立了几个较大的部门并且员工人数大量增加,公司内部的协同办公越来越重要。作为管理职能部门之一的行政部,其日常管理工作也随之增加,各业务部门办公资源的领用、会议室预订等工作量较大的事务占据了大量的时间。行政部门迫切需要通过信息化的建设,来辅助行政管理规范化、制度化,并使行政管理所需各种数据标准化,为行政管理提供各种数据分析支持。基于以上理念,决定开发基于Hibernate技术的EquipmentManagementSystem。4.1.2项目目标要求此系统实现办公用品的管理,办公用品申请流程的控制,会议室管理和会议室预订功能。此外,项目方面,此系统要达到以下要求:(1)系统必须基于B/S结构;(2)系统必须易维护、具有良好的扩展性;(3)系统必须易于改变和调整,具有良好的可移植性。4.1.3系统模型该系统模型如图4.1所示。图4.1系统模型4.1.4功能需求4.1.4.1办公用品申请由各部门助理每月填报办公用品申请后,办公用品管理员审核。然后自动汇总到采购人员。办公用品申请的内容包括:部门,申请年,申请月,申请日期,申请人,领用物品名称,数量和备注。为了申请的方便,可把当前所有有效标准办公用品都列出来,直接填数量即可,不买的不填。每个办公用品都有自己的基本单价(平常由办公用品管理员来维护),所以当助理申请完本月要买的办公用品后,可以获得总的办公用品花费金额。注意:除了常规的各种办公用品之外,还可以附加部门所需的非常规办公用品。非常规办公用品的价格必须由后来定价时输入。如果非常规办公用品没有买到,则直接定价为0就可以了。此外,除了固定的每月申请之外,因为各部门可能在每月过程中需要更多的办公用品(譬如新来的员工),所以各部门还可以在每月有更多的办公用品申请,行政部门根据库房情况,自主决定是使用库存还是临时采买的方式满足部门的需要。4.1.4.2.办公用品定价每一种办公用品都有一个基本单价,它的变更由办公用品管理员来调整。而在每一次的采购中,因为会存在一些非标准的附加办公用品,它的价格是应时而定的,所以在采购之后,需要为这些附加办公用品录入价格。4.1.4.3.办公用品统计按照部门核算每个月的办公用品的支出,但是有如下细节需注意:(1)可能有多张申请单,要合并在一起核算;(2)非标准的附加办公用品按输入的价格一起核算;(3)可按照申请单回放办公用品申请情况。4.1.4.4.会议室预订按日期列出各会议室以及各会议室的已预约情况,其内容包括:会议室名称,会议室位置,可容纳人数,已预约情况(部门、申请人、起始时间、终止时间)。根据自己所需确定会议室及预约时间段,有附加要求的,需要指明。如:申请人,所属部门,日期,分机号,与会人数,起始时间(时间用小时+分钟的方式,小时为0-24的下拉列表,分钟为00、10、20、30、40、50的下拉列表),终止时间(时间用小时+分钟的方式,小时为0-24的下拉列表,分钟为00、10、20、30、40、50的下拉列表),备注(是否需要准备水、是否需要投影仪、是否需要网络电话及其他附加要求)。会议室预定的时间段必须与前一个预约之间有一个间隔,间隔长短在系统参数中指定。默认为10分钟。一般预约成功就可以使用,不需要管理员干预;如果预约中有附加要求,则自动通知管理员。自己的预约,可以自己取消。4.1.4.4.会议室调整会议室管理员可以根据实际情况(如有重要客户、预约的附加要求不能满足等)进行调整。调整可以是修改预订信息,也可以是取消预订。但我们需要明确,调整的是结果,调整之前的沟通还在于会议室管理员的人工交流。4.1.4.5.基础数据(1)供应商:供应商的基本属性,如名称、地址、联系电话;供应商的附加信息,如星级、、优惠;与供应商相关的附件,如、优惠文件;(2)会议室:会议室属性,如会议室名称、会议室位置、容纳人数、常备设备、简要描述;(3)系统参数:会议室间隔;(4)标准的办公用品,可出现在部门的办公用品申请中。但各分公司的办公用品可能不同;(5)办公用品存在基本单价,做为办公用品申请时的价值计算。4.1.5用例分析4.1.5.1办公用品管理办公用品管理的用例图如图4.2所示。图4.2办公用品管理用例图4.1.5.2会议室管理会议室管理的用例图如图4.3所示。图4.3会议室管理用例图4.1.5.3基础数据基础数据如图4.4所示。图4.4基础数据4.1.6数据字典数据字典如图4.5所示。图4.5数据字典4.1.7性能需求满足各地分公司的Web请求,包括针对所有员工的申请、各级管理者的审批、以及高级管理者的统计查询。普通Web页面的展现小于30秒。图表展示、统计分析的Web展现小于1分钟。并发以20个为满足需要、10秒内以60个并发为要求。4.2基于Hibernate的系统设计4.2.1系统特点由上节的系统需求分析可以得出,该EquipmentManagementSystem具有以下特点:(1)系统包括填报办公用品申请、审核办公用品申请、查看汇总办公用品申请、常规办公用品维护和办公用品供应商管理等功能,业务逻辑比较复杂,各功能模块之间的数据查询等操作频繁复用。(2)系统涉及众多实体对象,包括办公用品申请表单、办公用品供应商、办公用品管理员、办公用品询价员、会议室管理员、普通员工用户等实体,各个实体之间的相互关联、制约形成了一张张错综复杂的关系网。(3)有较多不同类型的用户,包括普通员工用户、部门主管和管理员,管理员又分为办公用品管理员和会议室管理员。4.2.2设计要求(1)必须选取一种高效、完善、易于使用的ORM机制,把实体对象以及实体间的关联关系映射到关系数据库中,以便对对象进行检索、更新、删除等管理,为系统业务逻辑的实现打下坚实的基础。(2)针对系统复杂的业务逻辑,要求采用组件化设计,提供一组公共的服务和工具,提高代码的复用率和开发效率。(3)易于开发和维护。一个大型的项目是由一个项目组进行开发的,其中包括网页界面设计人员和Java动态程序设计人员。各自分工必须明确,当发生错误或者系统进行修改时不会造成不必要的麻烦,比如页面的修改与Java动态程序员无关,而Java程序的修改也不会影响到界面。(4)可升级、可扩展。系统设计时需考虑今后的进一步拓宽,便于日后新的模块加载到本系统中,使系统的功能不断改进和增强。扩充新业务内容时,不破坏系统的整体性,并且易于修改。(5)客户端操作方便,只需安装浏览器即可使用。(6)可靠性。充分利用服务器端数据库提供的数据维护功能,定期对数据库进行备份,从而保证数据的可靠性、一致性。4.2.3基于Hibernate的系统设计方案根据以上分析,决定本系统采用MVC模式,并基于实现ORM的Hibernate技术作为本系统的设计方案.MVC模式用控制器Servlet分开模型与视图部分,从而降低了系统的耦合性,同时增加了系统的可维护性。Hibernate负责管理Java类到数据表的映射,实现了对象的持久化。相对于使用JDBC和SQL来手工操作数据库,使用Hibernate可以大大减少操作数据库的工作量,而且也降低了业务模型部分的开发难度[18]。采用这个架构开发出来的系统无论是在整体架构上还是在局部的复杂业务模型中都有了更低的耦合性,它们的灵活性与可维护性也得到了提高。系统的设计模型如图4.6所示。图4.6系统设计模型JSP负责系统的页面显示。当用户向服务器端提交请求时(JSP页面),信息首先发送到控制器ActionServlet。ActionServlet处理客户请求,然后将其请求映射到Action类进行处理(Struts),Action类通过调用业务对象处理系统的业务逻辑。系统的数据访问策略采用了DAO模式。通过DAO模式为业务对象提供一个数据访问的抽象层,从而清晰地分离业务逻辑和数据访问逻辑。这样,当底层数据结构发生变化时,可以不影响到应用系统的其它部分[19]。数据访问对象类负责封装数据库访问语句,借助Hibernate实现对象-关系映射,操纵数据库并更新数据。4.3基于Hibernate的系统实现4.3.1环境配置4.3.1.1开发环境(1)Web服务器:Tomcat(2)数据库服务器:MySQL(3)开发平台:MyEclipse4.3.1.2Hibernate的配置文件在Hibernate.cfg.xml文件中,MySQL数据库连接配置信息如下:<hibernate-configuration><session-factory><!-指定数据库使用的SQL方言-><propertyname="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!-指定数据库的驱动程序-><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><!-指定连接数据库的用户名-><propertyname="connection.username">root</property><!-指定连接数据库的密码-><propertyname="connection.password">sa</property><!-指定连接数据库的URL-><propertyname="connection.url">jdbc:mysql://localhost:3306/EMS</property><!-是否将运行期生成的SQL输出到日志以供调试-><propertyname="show_sql">false</property><!-声明需要加载的对象-关系映射文件-><mappingresource="com/worksoft/wems/meetingroom/pojo/MeetingroomConfig.hbm.xml"/><mappingresource="com/worksoft/wems/meetingroom/pojo/MeetingroomReserve.hbm.xml"/>……</session-factory></hibernate-configuration>4.3.2数据持久层的实现持久层负责实现对象-关系的映射和持久化数据的访问,采用了DAO+Hibernate的架构。首先使用DAO模式把数据访问封装起来,以供在业务逻辑层中统一调用,然后在数据访问技术中采用Hibernate框架实现Java类与数据库表之间的转换与访问。4.3.2.1创建持久化类以下代码给出了办公用品申请表单的持久化类的定义:publicclassOfficesupplyConfigimplementsSerializable{privateLongofficesupplyConfigId;……//此处省略的是填报办公用品申请中的其它所需属性publicLonggetOfficesupplyConfigId(){returnthis.officesupplyConfigId;}publicvoidsetOfficesupplyConfigId(LongofficesupplyConfigId){this.officesupplyConfigId=officesupplyConfigId;}……//此处省略OfficesupplyConfig类其他属性的getXXX()和setXXX()方法}PO主要是为相应的数据表中字段定义访问方法,每一个字段对应一对get,set方法。Hibernate对JavaBean风格的属性实行规范化,采用如下格式来辨认方法:getXXX和setXXX。例如:对于属性属性officesupplyConfigId,它就拥有它的一对get,set方法,getOfficesupplyConfigId()和setOfficesupplyConfigId(LongofficesupplyConfigId)。值得注意的是,get,set方法不一定必须声明为public,Hibernate也可以对protected或者private的get/set方法的属性执行持久化。4.3.2.2创建对象-关系映射文件每一个表对应一个扩展名为.hbm.xml的配置文件,以下是OfficesupplyConfig类的对象-关系映射文件OfficesupplyConfig.hbm.xml的代码:<!--配置文件根节点--><hibernate-mapping><classname="com.worksoft.wems.officesupply.pojo.OfficesupplyConfig"table="T_OFFICESUPPLY_CONFIG"><idname="officesupplyConfigId"type="java.lang.Long"column="OFFICESUPPLY_CONFIG_ID"><generatorclass="increment"/></id><propertyname="officesupplyConfigName"type="java.lang.String"column="OFFICESUPPLY_CONFIG_NAME"length="60"/>……//此处省略了其它属性的对象-关系映射</class></hibernate-mapping>此配置文件实现OfficesupplyConfig对象映射到T_OFFICESUPPLY_CONFIG表中。com.worksoft.wems.officesupply.pojo.OfficesupplyConfig是已定义好的持久化类名,T_OFFICESUPPLY_CONFIG是要映射到的数据库中的表名。name后所接的是持久类中所定义的属性,column后所接的是数据库表中的字段。由此,持久化类和数据库中的表形成映射。4.3.2.3操纵持久化对象由于Hibernate持久化数据时要用到Session,因此需要创建一个辅助类HibernateUtil类负责初始化Hibernate,创建全局的SessionFactory实例,并且提供创建Session实例、关闭Session实例、以及重新创建SessionFactory实例的实用方法。以下是HibernateUtil方法的定义初试变量的程序代码:publicclassHibernateUtil{privatestaticSessionFactorysessionFactory;privatestaticLogmLog=LogFactory.getLog(HibernateUtil.class);publicstaticfinalThreadLocalsession=newThreadLocal();……}下边来描述HibernateUtil类中的一些方法:当想要获得一个可以使用的session的时候,可以使用currentSession()这个方法。在此方法中,首先使用session.get()得到当前的session,然后根据if(s==null)来判断这个session是不是空的。如果这个session是空的,则打开一个新的Session:configSessionFactory(); s=sessionFactory.openSession(); session.set(s);使用完一个session后,需要关闭当前的session以释放资源,此处调用closeSession()方法。在此方法中,也是首先使用session.get()得到当前的session。然后对所得到的session进行判断,如果所得到的session不为空,则执行s.close()进行关闭。configSessionFactory()被用来配置sessionFactory,在HibernatePlugin初始化的时候被调用。如果sessionFactory为空,则执行:sessionFactory=newConfiguration().configure().buildSessionFactory(); 除此之外,在HibernateUtil类中还有一些其它的重要方法,例如:释放sessionFactory对象的资源的freeFactory()方法,用于直接查询出sql的结果的executeSql(Stringsql,intnum)方法,记录Hibernate配置异常的logMsg(Exceptione,Stringmsg)等。此外,Hibernate还封装了通过JDBCAPI访问数据库的细节,实现对数据库数据的操作。4.3.3系统运行效果系统部署完毕,在地址栏输入:http://wams.worksoft.com.cn/即可看到系统的登陆界面,如图4.7所示。图4.7登陆界面成功登陆后,则会出现下边的欢迎页面,如图4.8所示。图4.8欢迎页面鼠标点击屏幕左边的选项,即可进入相应页面进行办公用品申请、会议室预定等操作,图4.9显示了点击办公用品申请后所显示的页面。图4.9办公用品申请4.4系统测试在Web工程开发过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作[20]。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证系统是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。更重要的是,还要从最终用户的角度进行安全性和可用性测试。在本系统开发过程中,进行了单元测试、集成测试、性能测试和验收测试。测试结果可见测试报告文档。5总结与展望面向对象的开发方法是当今的主流,但是同时不得不使用关系型数据库,将两者更好地结合起来将在很大程度上方便软件的开发。对象-关系映射需要由专门的映射工具来完成。本文结合一个具体的ORM映射工具——Hibernate——对对象-关系映射进行了研究与应用,包括持久化类的定义,开发时的体系结构,对象-关系映射的方法及操作数据的方法。通过具体的应用,证明了软件开发者使用对象-关系映射进行软件的开发可以在很大程度上减少人工使用JDBC和SQL操作数据的时间,从而加快软件的开发进程。Hibernate正以它独具得魅力吸引着众多的软件开发人员,以下是Hibernate成功的七大理由:(1)开源代码;(2)具有详细的参考文档;(3)对JDBC仅做了轻量级封装,必要的话用户可以绕过Hibernate直接访问JDBCAPI;(4)具有可扩展性;(5)使用方便,容易上手;(6)Hibernate既适用于独立的Java程序,也适用于JavaWeb应用,而且还可以在J2EE架构中取代CMP(Container-managedPersistence),完成对象持久化重任;(7)Hibernate可以和多种Web服务器,应用服务器良好集成,并支持几乎所有的流行的数据库服务器。随着Java的广泛使用,面向对象程序设计与关系数据库的紧密关联,Hibernate一定会有更好的应用前景。致谢在毕业论文即将完成之际,我要向关心过我、帮助过我的老师们、同学们、朋友们和亲人们忠心地说声谢谢。感谢我的毕业设计指导老师——xx老师。在整个毕业设计的过程中,xx老师给了我莫大的支持、关心与鼓励。我可以顺利的完成毕业设计和毕业论文的写作,离不开江老师的帮助。我是在企业里完成我的整个毕业设计过程的,但是我并没有因为不在学校而耽误到什么,江海老师的指导与及时沟通令我可以在企业里安心地实习,做我的毕业设计和毕业论文的写作。感谢学院的领导们、老师们。是你们为我们这些在企业里做毕业设计的同学提供了便利的条件,明确的指导。xx老师详细的通知和及时的问题回复,xx老师不辞辛苦来北京为我们做毕业设计中期检查,其他老师们给予的关心与帮助等等,作为在企业里做毕业设计的实习生,我收益匪浅。感谢TIBCO-CDC的同事们。有你们为我提供毕业设计的相关资料和知识,帮助我分析和解决毕业设计过程中遇到的困难,我前进的路才会更顺利。感谢我的同学们,朋友们。感谢你们给我的鼓励、支持与帮助,有你们,就有欢歌笑语,就有快乐。感谢爸爸妈妈,还有我的亲人们。感谢你们的鼓励与支持,还有孜孜不倦的督促。我会加油。再次感谢关心过我、帮助过我的老师们、同学们、朋友们和亲人们,谢谢你们!参考文献[1]尹海涛,曹庆华.基于Hibernate的对象持久化技术的研究[J].现代电子技术,2008,31(4):66-68[2]李刚.轻量级J2EE企业应用实践[M].北京:电子工业出版社,2007:192-263.[3]DeepakAlur,JohnCrupi,DanMalks.J2EE核心模式[M].北京:机械工业出版社,2002[4]孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发[M].北京:电子工业出版社,2004[5]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,23(6)74-76[6]李林红,沈文轩.基于Hibernate和Spring的持久层OR映射技术[D].辽宁鞍山:鞍山科技大学,2006.[7]车敦仁,周立柱.关系数据库与面向对象数据库的集成[J],软件学报,1996,7(11):669-675[8]JamesElliott.Hibernate.ADeveloper’sNotebook[M].O’ReillyMedia,Inc,2004:35-47[9]夏昕,曹晓钢,唐勇.深入浅出Hibernate[M].北京:电子工业出版社,2005:3-48,79-197.[10]孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社,2005:113-242[11]WillIverson.AJ2EEDeveloper’sGuide[M].AddisonWesleyProfessional,2004:38-40.[12]ChristianBauer,GavinKing.HibernateinAction[M].USA:ManningPublicationsCo.,2005:54-59.[13]宋汉增,沈琳.利用Hibernate对象持久化服务简化Java数据库访问[J],计算机应用,2003,23(12):135-137[14]窦东阳,赵英凯,许文稼.利用Myeclipse简化基于Hibernate的数据库访问[J].计算机工程与设计,2007,28(4):773-774,788.[15]徐云青,杨学明,徐义峰.Strut
/
本文档为【基于Hibernate技术的设备管理系统开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索