1、 J2EE的公司资产管理系统网上采购模块的设计与实现摘 要随着经济一体化进程的加快与互联网信息技术的飞速发展,公司的信息化的步伐也逐渐加快,从通常的手工操作到办公自动化套件的广泛应用,再到各式各样公司管理平台的大量实行,以及将来向一体化的方向进展,我国的公司信息化经历了一个技术化层面从低到高,集成化限度从分散到集中,管理理念不断更新,管理方式逐渐走向成熟的过程。期问涌现出许多优秀的管理平台,资产管理系统(EAM)就是其中比较有影响力的一款。EAM系统下的采购管理作为供应链管理的一个重要环节,日渐显示出其重要性。要想在信息化的浪潮中提高公司竞争力,建立一套适合公司发展的资产管理系统势在必行,而其
2、中网上采购模块是其中的一个重要角色。本系统基于B/S模式,采用应用广泛的J2EE开发平台、设计与实现了EAM资产管理系统,满足了公司管理信息化的需求。系统分为四个模块:网上采购、资产核查、资产申请申报、系统管理。其中网上采购管理模块目录管理、信息发布、报价系统构成。本文围绕设计与实现EAM采购管理系统,一方面对采购管理系统的流程进行了具体分析,以及各个模块与网上采购系统的关系,明确了需求:然后根据采购管理系统的需求分析,设计了采购管理系统的总体与具体架构,并在此基础上设计了相应的数据库;最后展示了采购管理系统的运营效果。关键词:J2EE,EAM,Struts,MVC,采购管理系统,ABSTRA
3、CTWith the rapid development of the economic globalization and informationtechnology such as the Internet,computer technology and network technology,companies accelerate thepace of informationizationFrom usual manual to extensive use of office automationsoftware,to the kinds of various enterprise ma
4、nagement platformS implementationand futureS direction ofthe integration progressour countryS informationization ofcompany in technology level from low to high,the degree of integration fromdecentralized to centralized,develop management theories and management modemove to maturityDuring the emergen
5、ce of many excellent system,EAM is one of themore influentialEAM procurementmanagement as an important part of supply chain management,it is increasingly importantIn order to improving the competitive of enterprise,establishingprocurement management system which adapt to enterprise is imperativeThis
6、 paper bases on B/S system ,adopt J2EE development platform,design and implement all EAM procurement management system,achieve the enterprise procurement management information requirementsThe EAM procurement management system involve four sub-modules related, such as procurement module,materials ch
7、eck module, purchase order module,system manage moduleAnd the procurement module divided into 3 specific modulesThe paper focuses on Catalogue manage Module,InformationModule,Price Reporting Module.Then,with the requirements of EAM procurement management system,we determine the architecture of the s
8、ystem,functional designing,and scheme out the databasesAt last,the paper demonstrates the runtime effectiveness of some modules,concludes the characteristics and limitations of the system,and points out the prospect of future workKey Words:J2EE,EAM,Struts,MVC,Procurement Management System第1章 引言1.1 选
9、题的目的和意义公司从采购、生产、销售到全面预算,处在一个迅速变化且难于预测的买方市场,为了提高竞争力,需要采用更加先进的制造技术与管理方法,做出快速响应。而实现按期交货,满足客户的需求,第一个环节就是采购。因此,采购作为公司运作的核心环节,其地位举足轻重。采购工作为了公司生产与管理,以及时、按质与按量的规定供应所需的物资,以最小的物资储备达成最佳的供货状态。避免物资的积压与缺料对于一个公司来说至关重要。因此,有必要创建可以集成在EAM的采购管理系统,以适应电子商务时代公司发展的需要。该采购管理系统是EAM系统中物流、生产流、资金流中物流与资金流的重要组成部分,在保障信息在不同部门之间的正常流动
10、,准时交货与减少成本起着重要作用。本EAM系统面向中小型制造公司、合用于多行业的、可根据具体业务需求进行功能淘汰并支持公司业务流程重组。并在广州、珠三角乃至全国制造公司中推广应用,逐步实现产业化。机械制造业重要通过对原材料的加工,改造与组装成为市场合需要的产品。重要涉及机械加工、机床加工与组装性行业。其中涉及的工业领域重要有机械设备、汽车、造船、飞行器、机车与日用器具等等。1.2 公司资产管理系统的发展状况工业发展经历了从手工作坊到机械化、自动化再到集成化的变迁,因此各个时期的检修方式也随之不断更新和发展。从总体上看,可分为以下几个阶段: 第一阶段:事后维修和防止性维修(从18世纪第一次产业革
11、命到20世纪初)。事后维修是指当设备发生故障时进行的非计划性维修,防止性维修即实行定期的点检及初期维护。第二阶段:经济检修(从20世纪初至80年代),随着科学技术的发展,检修方式也变的多种多样,于是就产生了以节约成本为宗旨的综合检修方式。即将各利一检修方式根据需要,有机地结合在一起的检修方式。其显著的特点是设备现代化、管理现代化。第三阶段:状态和预知维修(从20世纪80年代至今)。依靠盟测设备,对设备运营状态的进行监控,然后做出维修决策。通过这种方式,可以大大减轻专业维修人员的工作量,不仅如此,运营人员也可以通过监测设备参与检修,及时调整设备运营状态,以维护设备的正常高效运转。纵观设备维修的发
12、展史,我们可以发现,每一中设备维修方法的诞生,都是随着着科学技术的进步应运而生的。在科学技术低下的初期,由于没有先进的设备管理系统,设备维修只能依靠事后维修的方式进行;随着科学技术的发展,首先出现的是低层次的设备管理系统,只能对设备进行简朴的管理,所以可以制定出一定的维修计划和设备的维修周期,进行防止性维护;到了设备维修的第三个阶段,恰逢信息技术飞速发展的时代,先进的管理系统,就可以使经济维修成为也许;到了今天,随着其他技术,例如监测技术的飞速发展,使得系统可以实时监控设备的运营状态,这就可以根据设备的实时状态进行防止性维修。正是基于当今设备维修发展的需要,一套先进的,融合最新技术的设备管理平
13、台就显得尤为重要,而公司资产管理系统(EAM)就是在这个背景下诞生的。EAM的前身是CMMS(Computerized Maintenance Management System:计算机化的设备维护管理系统)。CMMS更多侧重维修管理,涉及防止性、预测性维修计划,从系统的应用范围来看,CMMS更多停留在部门级的水平。EAM系统已经在管理的广度和深度上提高到整个公司级,甚至是多公司的管理,EAM系统支持多组织管理。在这样的管理模式下,充足保存了各分公司自身的管理特点,并在需要时互相方便地互换信息和共享流程。这样的EAM系统将帮助管理决策层方便、及时、完整的了解下属公司的运营状况,特别是可以直接在
14、系统中直接对下属企业、部门、系统或其混合模式进行预算控制,以此帮助跨国公司、集团公司全局掌控和管理资产,最大限度减少管理成本,实现公司价值最大化。IT技术的应用同时,EAM帮助公司把实现公司设备资产管理的战略目的变得更加灵活和简朴。随着计算机、数据库,特别是Internet的广泛应用,EAM系统也从过去CMMS可以单机安装发展到今天的网络化运营。任何地点、任何时间, 用户只需要运用标准Internet浏览器即可登录系统,获取实时的管理信息。这样的运作方式同时减少了公司对于IT设施投资,以及维护的成本。全球EAM软件及服务市场规模早在2023年已超过13亿美金,2023年将达到19亿美金。而对于
15、国内EAM的市场窄间,各家公司对于具体的数字说法不一, 而一致的见解是EAM的增长速度是公司信息产品中发展最快的。1.3 论文研究内容本文对EAM的采购管理系统的各个模块进行了需求分析,在需求分析的基础上,设计了系统架构,并实现了EAM采购管理模块,满足了公司采购信息化的需求。本文的重要工作有:1对采购管理系统进行了需求分析。一方面,分析了采购管理的总体业务流程与采购管理在整个EAM系统中的地位;然后,将网上超市管理、资产申请、资金申请功能,具体分析,明确需求。2设计了系统的总体架构。总体架构分为视图层、代理层、控制层、模型层与DAO层,设计了系统的总体业务流程和各层解决逻辑。3设计了系统的具
16、体架构。一方面设计了具体架构通信图与数据流;然后分别设计了前台与后台的逻辑解决系列图。4设计了相应的系统数据库。5对系统模块中的类与接口、页面进行设计与编码。1.4 论文结构本文分为6章第1章,绪论。简要叙述了项目背景与开发采购管理系统的意义,引出了本文重要工作。第2章,系统平台与技术。简朴说明了本文涉及的关键技术J2EE、MVC和SSH框架技术。第3章,网上采购模块需求分析。一方面分析了采购管理的总体目的,然后具体分析了采购管理涉及的各个模块的流程与功能,明确了需求。第4章,网上采购模块设计与实现。一方面设计了系统的总体架构与原理,然后设计了系统的具体架构设计与数据库,最后具体阐明系统模块的
17、重要类与页面设计。以及说明了系统开发与运营环境,并直观展现系统部分模块的运营效果。第5章,总结与展望。对总结了本文、分析了项目的特点与优势、指明了未来工作的切入点。第2章 系统平台与技术2.1 MVC设计模式2.1.1 MVC模式的介绍随着Web开发的不断发展和需要,MVC模式被推荐并成为Sun公司J2EE平台的设计模式,并且在应用中受到越来越多的开发者的欢迎。Model-View-Controller本来是Xerox PARC在八十年代为编程语Smalltalk-80发明的一种应用程序的框架结构,至今已被广泛使用。该框架结构支持三层结构的类:表现应用程序状态层、屏幕表现层和控制流层,因此这三
18、层被称为模式(Model)、视图(View)和控制器(Controller)。MVC是可以满足那些需要为同样的数据提供多个视图的应用程序的开发需要,在开发与用户接口相关,特别是对用户接口规定较复杂的相关的应用程序时,可以很好地以不同的方式来显示同一数据,也就是在不改变软件功能的前提下,可以实现用户对用户接口的个性化规定,而MVC模式的最大特点就是将业务层与表达层分离,并且提供了很多使显示接口更加个性化的卷标库,所以它能更好地实现用户接口的各种个性化需求。MVC通常用于分布式应用系统的设计和分析,如:大型商业网站、公司信息系统、管理信息系统、决策支持系统等,但它自身并不局限于某一个特定的领域。M
19、VC设计模式,最近几年被推荐为SIJN公司JZEE平台的设计模式,它强制性地把应用程序的输入、解决和输出分开3。它的三个核心部件分别是模型、视图和控制器,它们各自解决各自的任务:(1)模型(业务逻辑层):表达公司数据和业务规则,实现具体的业务逻辑、状态管理的功能。在MVC的三个部件中,模型拥有最多的解决任务。例如它也许用像EJB和ColdFusion Companies这样的构件对象来解决数据库。被模型返回的数据都是中立的,也就是说模型和数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的反复性。(2)视图(表达层):即用户看到并
20、与之交互的接口,是应用程序的外在表现,通常实现数据的输入和输出功能。对老式的Web应用程序来说,视图就是由HTML元素组成的接口,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术也层出不穷,它们涉及Macromedia Flash和像XHTML、XML/XSL、WML等一些标记语言和Web Services。因此如何解决应用程序的接口变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序解决很多不同的视图。在视图中其实没有真正的解决发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。(3)控制器(控制层):
21、起到控制整个业务流程的作用,根据用户的输入调用相应的模型和视图去完毕用户的需求和相关的操作。具体地来说:控制器自身不输出任何东西和做出任何解决。它只是接受客户的请求并进一步决定调用哪个模型去解决该请求,并根据解决结果来拟定用哪个视图来显示模型解决之后返回的数据。它们三者之间的关系如图3.1所示。 图2.1 MVC组件类型的关系和功能2.2 Struts项目概述 Struts是Apache组织的一个项目,像其它的Apache组织的项目同样,它也是一个开源专案。Struts作为一个设想是Craig R McClanahan于2023年提出的,该设计的目的是为运用Java技术开发基于MVC模式的We
22、b应用提供一个标准模式。基于Struts架构的Web应用程序基本上符合JSPModel2的设计标准,是MVC设计模式的一种变形,提供了对开发MVC系统的底层支持,它采用的重要技术是Servlet、JSP和Custom Tag Library5。Struts框架是一种基于Java的技术,Web应用程序开发人员通过Struts框架即可充足运用面向对象设计,代码重用及“编写一次,到处运营”的优点。此外,Struts不仅是拥有自己的控制器,同时整合了其它的一些技术来实现模型层和视图层,例如:在模型层,它可以很容易与数据库的访问技术相组合,涉及JDBC技术和EJB技术;在视图层,它可以与JSP、XSL等
23、组件相结合6 。所以从一定的意义上讲,采用Struts来实现基于MVC的Web应用的开发,可以根据具体的需求来选择设计的复杂限度,具有很好的扩展性。Struts的重要优势功能如下:(1)Struts中包含一个控制器Servlet,用来控制用户的请求发送到相应的Action对象;(2)在JSP页面中可以选用自定义标签库,并且在控制器Servlet中提供关联支持,这样可以帮助开发人员方便快捷地创建交互式窗体应用;(3)Struts还提供了一系列实用对象:XML文献解决、通过Java Reflection API自动解决JavaBean属性、国际化的提醒和消息。2.2.1 Struts核心组件Str
24、uts是一组互相协作的类、Servlet和JSP标记,它们组成了一个可重用的MVC设计模式。这个定义表达Struts是一个框架,而不是一个库,但同时Struts也包含了丰富的标记库和独立于该框架工作的实用程序类库。Struts通过一些组件类来完毕框架的功能,这些组件涉及:ActionServlet、Action、ActionForm、ActionForward、ActionMapping。1. ActionServletActionServlet继承自javax.servlet.http.HttpServlet类,它在struts中扮演的角色是中心控制器。它提供了一个中心位置来重要负责将Htt
25、p客户请求组装后,根据配置文献的指定的描述,转发到适当的解决器。此外,除了作为应用程序的前端控制器外,ActionServlet实例还负责初始化和清除应用程序的资源。2. Action一个Action类的角色,就像是客户请求动作和业务逻辑解决之间的适配器,它作为应用程序响应用户请求的动作,将请求与业务逻辑分开。这样用户的请求和Action类之间可以有多个点对点的映射。Action最为常用的方法是execute(),典型的Action类一般要在execute()方法中实现下列逻辑:(l)检查用户session的当前状态。假如session过期或者用户没有登录,要将表达层的页面跳转到用户登录页面;
26、(2)检查用户输入的合法性。调用Form Bean实例的validate()方法检查一些字段的输入值是否恰当或合法;(3)执行业务操作。调用业务逻辑Bean的相应方法执行用户的业务请求;(4)更新服务器端的对象。将Model的状态改变告知给View,并返回请求页面。3. ActionForm一个应用系统的消息转移(或者说状态转移)的非持久性数据的存储,通常由ActionForm Bean来负责,它的重要功能是为Action的操作提供与客户窗体相映像的数据。对于每一个客户的请求,一般要经历如下几个环节:(l)检查Action的映像,拟定配置文献中己经配置了对ActionForm的映像;(2)根据
27、Name属性查找ActionForm的信息;(3)查找ActionForm的使用范围,拟定在此范围下是否存在相应的 Form Bean的实例;(4)假如在当前范围内,相应的 Form Bean的实例己经存在,并且对当前的请求来说是同一类型的话,就可以重用,否则,就要重新构建一个 Form Bean的实例;(5)调用Form Bean的reset()方法;(6)调用相应的set()方法,对状态属性赋值;(7)假如validated属性值被设立为true,则调用Form Bean的validate()方法;(8)假如validate()方法没有返回错误,控制器将ActionForm作为参数,传给A
28、ction实例的execute()方法执行。 4. ActionForward当Action实例的execute()方法运营完毕后,控制器根据Mapping可以将响应信息转到适当的地方,ActionForward的重要功能就是对将要转向的视图的地址的一个封装。转向的各种属性也可以在配置文献中设立性,这样就大大提高了软件的复用性和可维护性。 5. ActionMappingActionMapping以Java的形式封装了如何将一个请求URL映射到与其相应的Action的一些信息。ActionMapping对象帮助进行框架内部的流程控制,它们可以将请求URL映像到Action类,并且将Action
29、类与 ActionForm Bean相关联。Struts框架的控制器ActionServlet在内部使用这些映射将控制转移到特定的Action类的实例。2.2.2 Struts的工作流程采用Struts框架开发Web应用系统时,在Web应用启动时就会自动地加载并初始化ActionServlet,此时ActionServlet将会从Struts-config.xml文献读取配置信息,并把它们存放到各种相应的配置对象中。当ActionServlet接受到一个客户请求时,将执行如下流程:(l)检索与用户请求匹配的Action实例,假如不存在,控制器直接将请求转发给JSP或静态页面;假如有相应的Act
30、ion,并且这个Action有一个相应的Form Bean,ActionForm被实例化并用Http请求的数据来填充其属性,然后保存在ServletCotenxt中,以备其它Action对象或JSP调用。(2)控制器根据Struts-config.xml的配置信息将请求切换到具体的Action,相应的相关的 Form Bean的信息也一起发送给Action类的execute()方法。(3) Action的execute()方法返回一个ActionForward对象,控制器ActionServlet再通过该ActionForward对象来进行转发工作。(4) Action根据业务解决的不同结果返
31、回一个相应的目的响应对象给总控制器,这个目的响应对象可以相应一个具体的JSP页面或者是此外一个Action。(5)总控制器ActionServlet根据业务功能Action返回的目的响应对象(多数情况下,该响应目的是一个JSP页面),将Http请求转换到该目的响应对象中,进一步将结果页面展现给用户。2.2.3 Struts框架实现MVC模型Struts实质上就是JSP Model2的基础上实现的一个MVC模式框架,MVC设计模式为构建可扩展、可重用的体系结构打下了很好的基础,该设计模式需要用户将自己的代码抽象出来,把项目在一定的限度上分解为表达,逻辑和控制三部分,每部分之间的关系相对较小,以便
32、使得软件结构更加灵活,并具有较好的可重用性和可扩展性。在Struts框架中,模型一般有实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP檔构成,Struts实现的MVC框架如图3.4所示。 图2.2 Struts实现的MVC模型Struts是Apache组织的一个项目,提供了一个实现MVC架构的高度自动化的方式,作为一个MVC的框架,Struts对Model、View和Controller都提供了相应的实现组件:(l)控制器(Controller):控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送
33、回到客户端。在Struts中Controller功能由ActionServlet和ActionMapping对象构成。ActionServlet是MVC设计模式的决策控制部分,也是Struts框架的核心。它根据ActionMapping把Http消息形式的用户请求转换成相应的应用程序的动作。ActionServlet还负责用相应的请求参数填充ActionForm(通常称之为FormBean),并将其传给相应的动作类(通常称之为ActionBean)。动作类Action来实现核心商业逻辑,它可以访问JavaBean或调用EJB,最后动作类指向相应的JSP檔,最终生成相关的视图。ActionSer
34、vlet涉及一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action解决器对象类之间的点到点的映像。ActionMapping中有Action对象的名字和地址的描述,当有请求传入Controller时,它把请求的途径映像到Action的地址,并把请求传给那个Action类。ActionMapping类也涉及一些程序中也许的唯一的信息,例如本地变量,特定环境数据,或者URL。(2)模型(Model):表达应用程序的状态和业务逻辑9。MVC系统中的Model部分从概念上可以分为两类:系统的内部状态和改变系统状态的动作。S
35、truts为Model部分提供了Action和ActionForm对象,所有的Action解决器对象都是程序开发者从Struts的Action类派生的子类,并对其中重要的方法进行覆盖。Action解决器对象封装了具体的业务解决逻辑,解决具体的业务逻辑操作,并且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象,可以通过定义属性描述客户端窗体数据。我们可以从它派生子类的对象,运用它可以实现对客户端的窗体数据的良好封装和支持,相应的Action解决器对象可以直接对它的窗体数据进行读写,而不再需要和Request、Response对象进行数据交互,通过Actio
36、nForm组件对象实现了对View和Model之间非持久性数据交互的支持。(3)视图(View):视图是用户看到并与之交互的界面。Struts应用中的View部分是通过JSP技术实现的。Struts提供了自定义的标签库,通过使用这些卷标定义的JSP窗体可以和Model部分中的ActionForm的映像,完毕对用户数据的相关封装,同时还可以使用这些标签来丰富JSP页面。2.3 数据持久技术与Hibernate在采用了Struts技术的框架中,Struts简化了Web层的开发,实现了应用程序的显示逻辑和业务逻辑的分离,使应用程序更趋模块化,应用程序更加容易维护。这种应用程序的基本架构是MVC(St
37、ruts)+DAO(Data Access Object)+JDBC+Databases。为了进一步地提高代码的可复用性和可维护性,提高开发效率,需要一个更加有效的架构。由于大多数的应用程序都涉及到的数据库操作,通常数据库表会很多并且关系复杂,假如使用DAO+JDBC访问数据库将会使得编程过程复杂化,进而带来的是大量的维护工作,特别是层与层之间的耦合性大,表格属性的变动将极大的影响代码的维护,因此需要有一种方便通用的方案来解决这个问题。这里将采用对象/关系映像(Object/Relational Mapping)的数据持久化技术来简化编程的复杂度,目前实现对象关系映像也已有一些比较成熟的工具,
38、如Caster,JDOGenie,Hibernate等。本文重要应用Hibernate:在Struts中,不需要太多的代码,它可以将对象映像到关系数据库中的行,不需要编写复杂的SQL语句,开发架构也就变成Struts+ DAO+ Hibernate+Database,毫无疑问使用Hibemate实现持久层是一种有效的选择,它可以大大减少操作数据库的工作量,并且使得系统更加易于维护。2.3.1 Hibernate的概述和特点1.Hibernate概述Hibernate是一种很好的ORM(Object/Relational Mapping)映射工具,支持使用各种Java思想如:inheritanc
39、e,association,composition,collections等实现的对象。它可以直接映像大部分的JavaBean而不需要做任何修改,即使修改最多也就是在相应的Bean里面加上一些私有访问方法;可以将一个用户定义的多个实例映像到一张表的同一行;还可以用代理模式简化加载类的过程14。对于使用JDBC和SQL手工操作数据库来说,使用Hibernate,可以大大减少操作数据库的工作量。因此使用它,既可以用来在Java应用程序中取代大部分JDBC代码,也可以很方便地整合到系统中作为持久层框架。Hibernate使用数据库和配置文献数据来给应用程序提供相应的持久化服务和持久化的对象PO(Pe
40、rsistent Objects)。通过简朴地设立配置文献hibernate.xml和创建每个数据库表的xml映像文献,可以省去大量复杂的JDBC编程,Hibernate可以支持17种数据库,同时它也支持连接池应用。2.Hibernate的特点(1)Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。Hibernate的特点重要是简朴、易用、强大、灵活并且速度够快。Hibernate可以代替JDBC的编程应用的场合,例如Java应用程序中访问数据库部分的代码,DAO模型中接入数据库时的访问代码,甚至可以是BMP里面的访问数据库的代码。此外,Hibernate拥有自己的
41、功能强大的查询语言 (HQL),HQL与SQL非常相似,HQL基于SQL,但它提供了更加面向对象的封装。(2)Hibernate不同于Entity Bean。Entity Bean由容器解决大部分的资料完整性、资源管理和并发性功能,因此开发人员只需要关注业务逻辑和数据解决。从软件整体的框架来看,Hibernate不能用于完全替代 Entity Bean。Hibernate和 Entity Bean都为程序员实现了透明的持久性,并且程序员都不需要关心太多的技术细节15。Hibernate此外也为我们提供了更灵活的事务管理机制,Hibernate使用Session来管理事务,而 Entity Be
42、an则将事务管理委派给了EJB容器。Hibernate虽然具有自己的事务管理,但是事实上它的事务管理是对 JDBC Transaction的封装,或者是对 JTA Transaction的封装,也就是上面提到的,Hibernate是对JDBC的轻量级对象封装。值得注意的是Hibernate的事务管理更加灵活,它可以在 JDBC Transaction和JTA Transaction之间进行选择,默认情况下将使用JDBC Transaction。(3) Hibernate是一个和JDBC密切关联的框架,Hibernate的兼容性只与JDBC驱动和数据库有关系,而与Java程序或者APP Serv
43、er没有任何关系。(4)灵活的对象-系映像方法,可以实现各种不同类型的映射,并且Hibernate具有简朴易于操作的API接口和丰富的资源配置文文献,这些都使得应用程序的开发更加简朴和快捷。3.Hibernate持久化框架的作用在软件开发过程中引入成熟的持久化实现框架,大大提高了数据库访问层的开发效率,具体表现在以下几个方面:(l)可以减少乏味代码的编写。Hibernate持久层框架封装了数据持久层的很多相关的技术细节,例如事物管理、数据库连接管理、SQL语句的生成等,使得开发人员可以避免反复的JDBC编程,将精力投入到业务逻辑具体实现中去。(2)更加面向对象的设计。Hibernate持久层框
44、架是建立在面向对象的设计思想之上的,而ORM(Object Relational Mapping)是Hibernate持久层框架的基本特性,也是Hibernate实现面向对象设计的关键技术。ORM为系统面向对象的设计的实现提供了更加自然的实现方式,可以通过ORM将系统中的 Domain Objects自动映像到各个数据库表,从而在编码过程中只需运用面向对象的方法来解决Objects的相关属性,而无须对JDBC ResultSets中的字段进行分别解决。(3)可以保证更好的性能。Hibernate持久层框架提供了优秀的性能优化机制,如内置的数据库连接池支持、PrepareStatement缓存、
45、数据缓存等。这些对于上层架构完全透明的优化机制的综合使用大大提高了系统的性能。(4)更好的可移植性。基于Java的跨平台特性,开发的软件系统可以在不同的操作系统之间切换,但由于数据库之间的差异,系统在数据库平台之间移植并不太容易实现。而Hibernate持久层框架由于其设计上的良好隔离,提供了对不同数据库的良好支持,只需简朴地修改其配置文献中的数据库的属性参数,即可实现底层数据库的切换,更好地提高了系统的可移植性,也更好地保护了己有的人力和资源投入。2.4 Spring框架的应用 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决公司应用开发的复杂性而创建的。Spring
46、使用基本的JavaBean来完毕以前只也许由EJB完毕的事情。然而,Spring的用途不仅限于服务器端的开发。从简朴性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案16。可以说Spring是公司应用开发的“一站式”选
47、择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。简朴来说,Spring是一个一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架:(1)轻量:大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR檔里发布。并且Spring所需的解决开销也是微局限性道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。(2)控制反转:Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是
48、这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反像从容器中查找依赖,而是容器在对象初始化时不等对象请求就积极将依赖传递给它。(3)面向切面:Spring提供了面向切面编程的丰富支持,允许通过度离应用的业务逻辑与系统级服务(例如审计(auditing)和事务管理)进行内聚性的开发。应用对象只实现它们应当做的完毕业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日记或事务支持。(4)容器:Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何互相关联的
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100