基于Struts+Spring+Hibernate框架的LIMS的设计和实现

时间:2022-08-25 02:51:33

基于Struts+Spring+Hibernate框架的LIMS的设计和实现

摘要:该文在对当前实验室的现状进行分析研究的基础上,结合目前主流的基于J2EE平台和MVC设计模式的Web应用体系,采用Struts和Spring框架设计了一个基于Web的实验室信息管理系统。通过分析Spring框架原理和实现,指出此框架完全适用于一般Web应用的大部分功能和性能的要求。由于Spring本身“无侵入性”的特点,它又可以方便地集成Hibernate O/R映射方案,集成优秀的Web层框架Struts。从而实现LIMS要求的各种功能。

关键词:实验室信息管理系统;MVC模式;Struts框架;Spring框架;O/R映射

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)14-3716-03

The Design and Implement of LIMS System Based on Struts, Spring and Hibernate Software Framework

TANG Ying-mei

(Guangdong Electronic Technology School, Guangzhou, 510615, China)

Abstract: Based on the research of LIMS, LIMS is designed and implemented on Struts and Spring frame in which J2EE and MVC-based web design pattern is adopted. This paper makes use of the Spring framework by analyzing its principle and realization. It also points out that the Spring framework can be suitable for the majority request of general Web application in the function and performance. Due to its trait of "no intrusiveness", the Spring framework can easily integrate Hibernate to replace Entity Bean's O/R mapping solution and excellent Struts framework.In order to achieve the requirements of the various functions.

Key words: LIMS; MVC; Struts; Spring framework;O/R Mapping

1 引言

在现代实验室中,高度自动化的仪器设备和快速完善的分析方法的大量出现,使实验室的功能不断加强,数据量和信息量迅速增大,这些都对现代实验室的管理和正常运作提出了极高的要求。同时,作为一种信息资源,实验室的分析数据应该有规范的贮存和再加工能力,这就对现有实验室的管理提出了更高的要求。传统上基于人工管理的实验室管理模式受到了极大的挑战,而基于网络平台的实验室信息管理系统(LIMS)自然成了首选的方案。

随着实验室认证的逐步推广,WTO的加入,对实验室的整体运行水平、管理水平,特别是管理工具提出了更高的要求。在当今这样一个信息时代,如果一个实验室的管理停留在手工管理和纸袋储存数据的层次上,这是不可想象的,也必将面临被淘汰的危险。因此可见,LIMS―实验室信息管理系统的引入无疑会把实验室的管理水平提升到信息时代的最高水平。

2 研究现状

对于各种LIMS的开发一直是热点,但是大部分是基于 ASP 或 JSP 技术,在实现过程中没有考虑系统的扩展性、安全性。目前国内还少有利用 Struts、Spring、Hibernate 三种框架技术相结合的系统。该系统针对行业管理系统中考核指标的多变性,构建一种易于扩展的系统结构模型,提供网络化的LIMS。使用该系统能够在规范管理的基础上结合管理实践,充分满足实验室需求;对实验室工作流程进行科学、规范、系统的管理。本文阐述了基于Struts+Spring+Hibernate框架所开发的LIMS的体系结构、应用程序各层次设计的每一阶段以及所采用的关键方法和技术。

本文正文分为六部分。 第一部分简要介绍了LIMS的研究现状;第二部分概述了的基于Struts、Spring、Hibernate的研究现状;第三部分阐述了LIMS设计过程中使用的关键技术;第四部分介绍LIMS的框架设计;第五部分阐述了LIMS功能需求;第六部分阐述了Spring整合Struts与Hibernate的实现。

3 关键技术

3.1 MVC设计模式

目前几乎所有的Java企业应用程序都采用基于Web的用户操作界面,因此构建在可重用商业逻辑之上的Web层应用是非常重要的。MVC设计模式把应用程序抽象为Model(模型)、View(视图)、Controller(控制器)三个功能截然不同的部分[1]。三者既分工又合作地完成用户提交的每项任务,如图 1所示。

3.2 MVC模式在J2EE平台上的实现

J2EE模型提供了一个很好的企业应用框架及解决方法,提供了灵活的技术选择,但它只是一个应用开发框架,不能解决系统的所有问题;同时,多层企业应用框架在提高了软件的重用性和分解了问题的复杂性的同时,也使得代码庞大,层与层之间的控制关系复杂。MVC设计模式以它可以分离数据访问和数据表现,可以开发一个具有伸缩性的、便于扩展的控制器来维护整个流程的优势。MVC模式运用于J2EE平台的具体体系结构如图2所示[2]。

3.3 Struts框架[3]

Struts是Jakarta工程提供的用于开发Web应用软件的框架。它的目的是提高运用MVC模式开发Web应用的效率。它将MVC模式所具有的“分离业务逻辑和显示逻辑”的能力发挥到了极点,很好的帮助Java开发人员开发J2EE Web层。图 3是MVC模式中模型、视图、控制器的作用以及它们之间的交互,Struts框架是基于MVC的。

3.4 Spring框架

Spring是一个由多个相对独立子框架组成的完整的应用框架,它可以在很多应用层面发挥作用,在具体的使用中,开发者可以将其无缝集成起来,成为一个全面的应用框架。如图4所示。

3.5 Spring对Struts的支持

Spring为了集成Struts,专门提供了org. Spring framework. Web. Struts包,Action Support在集成Spring上下文上起到很重要的作用。[4]

通过在Struts-config.xml中配置如下内容的方式来初始化Spring ApplicationContext,使用到了Struts提供的扩展机制(并不是所有的Web框架都提供了类似的扩展机制)。Spring和Struts使能应用需要借助于ActionSupport,才能够使StrutsAction访问到Spring ApplicationContext。开发继承于ActionSupport的Action,在这些Action中就可以使用到Spring受管JavaBean(借助于Spring ApplicationContext的getBean()方法获得它们),进而,就可以享受到业务逻辑、安全服务等。开发ActionSupport的子类是非常简单的事情,它同开发100%Struts Action子类几乎不存在任何差别。

3.6 Spring对ORM的支持

Hibernate是对象/关系映射的解决方案,简写为ORM。所谓ORM,简单地说就是将Java中的对象与对象关系,对应到关系数据库中表与表之间的关系。

为使开发者能够以统一的方式同数据库访问技术(比如,JDBC,Hibernate, JDO, Toplink)进行交互,Spring提供了允许开发者可以在不同的数据访问技术间切换、而且在切换的同时不用考虑异常处理的DAO ( DataAccess Object)抽象。

Spring提供了一套抽象DAO类,供开发者扩展,这有利于以统一的方式操作各种DAO技术,比如JDO, JDBC。这些DAO类提供了设置数据源及相关辅助信息的方法,其中的一些方法同具体的DAO技术相关。通过SpringDAO抽象,能够将具体的DAO技术的异常,比如HibernateException, SQLException,转换成DataAccessException为根的异常处理体系中。针对Hibernate的Spring DAO抽象类是Hibernate DaoSupport,开发者需要为它配置Hibernate Session Factory,通过其子类,开发者可以获得Hibernate Template。当然,也可以手工配置Hibernate Template。

目前Spring框架借助于Spring IoC和Spring AOP对Hibernate进行了最为有效的集成。

4 LIMS的框架设计

本系统采用在J2EE架构下的MVC模式,整个技术框架的组成为:视图层采用Struts框架进行表单验证及页面显示,业务层采用Spring框架,实现事务管理和宏观调控,数据持久化层使用Hibernate技术实现对象关系映射和持久化操作。基于Struts+Spring+Hibernate 框架的实验室信息管理系统的框架图如图5所示。

系统使用B/S架构模式,用户通过Internet/Intarnet从浏览器访问LIMS管理平台,系统部署在Tomcat或JBoss等应用服务器上,数据保存在数据库服务器,具体的数据库产品可以根据用户的喜好来选择,在开发阶段,使用了数据库产品Oracle9i数据库。

4.1 表示层(The Presentation Layer)

1) 管理用户的请求,做出相应的响应。

2) 提供一个 Controller,委派调用业务逻辑和其它上层处理。

3) 处理异常,抛给 Struts Action。

4) 为显示提供一个模型。

5) UI 验证。

4.2 持久层(The Persistence Layer)

1) 查询对象的相关信息。

2) 存储,更新,删除数据库记录。

4.3 业务层(The Business Layer)

1) 处理应用程序的业务逻辑和业务校验。

2) 管理事物。

3) 允许与其它层相互作用的接口。

4) 管理业务层级别的对象的依赖。

5) 在显示层和持久层之间增加了一个灵活的机制,使得他们不直接的联系在一起。

6) 通过揭示从显示层到业务层之间的 Context 来得到 business ser-vices。

7) 管理程序的执行(从业务层到持久层)。

5 LIMS功能需求

用户管理功能。在实验室中,不同类型的用户使用该系统的权限并不相同,可以执行的各种操作也不相同,这种复杂的用户权限验证需求可以总结为:用户资料管理,可控制的资源限制访问。

实验室信息管理功能。该部分包括实验室信息(包括资料、样品、业务等)、客户的添加和查询两大部分。实验室信息管理是面向系统管理员和各部门主管,包括了市场营销中心、业务技术中心、综合管理部办公室、检测中心和计量中心五大部门,这几个部分包括各自部门数据的新增、删除、修改和查询等功能。

一般数据管理功能。该部分功能是面向一般技术人员,技术人员可以在平台添加、查询、删除自己所管辖的功能点技术信息和业务信息,系统管理员能够这些信息进行综合管理。

系统维护功能。面向系统管理员,包括了对平台运行状态的维护、日志查看、用户密码回复等功能。如图7所示系统用例图。

6 Spring整合Struts与Hibernate的实现

利用各个框架的整合实现了LIMS系统。通过该系统可以方便平台管理员、各部门主管及一般用户的各种操作,如部门主管对外的业务联系、对内的人员管理、对所属部门的实验室信息的管理、决策。平台管理员通过系统实现系统管理、权限分配、各种信息管理等。不论用户还是实验室各种资料、数据和信息都有各自的属性,它们之间可能是一对一也可能是一对多、多对多的关系。

本系统中的用户界面层就是利用Struts来实现的,它本身就是结合MVC架构模式在这里负责将用户数据传入业务层,以及将业务层处理的结果返回给用户,此系统属于较简单Web应用,采用了OpenSessionInView模式处理LazyLoad问题,这样可以在用户视图中使用get ,set方法来方便地获取关联对象。

为了处理庞大的Action和ActionForm问题,在此准备使用DynaActionForm(DynaValidatorForm)和DispatchAction以及动态验证框架来解决。及使用Tile来解决框架问题。使用自定义标签处理分页和身份验证问题。

而业务层是利用Spring来实现的,Spring框架最得以出名的是与Hibernate的无缝链接,Spring对Hibernate提供了90%以上的封装,使程序开发人员不必去关心Session的建立、关闭、以及事务使程序开发人员能够专心的关注业务逻辑。为各个模块分别构建Service层的BusineusService接口方法,同时在用户界面上加入身份验证机制以及在页面访问上加入分页方法和业务逻辑方法。

在数据访问层用Hibernate来实现,有了Spring的封装以后,要对Hibernate做的就是正确地实现对象关系的映射。由于此层处于系统的最底层,准确无误的实现对象之间的关联关系映射将起着至关重要的作用。

对于业务层而言这里需要认真考虑每一个业务逻辑以及相关的所有能用到的持久层对象和业务对象,如果没有对他们之间的关系进行认真细致的分析和设计就会很容易的产生模块之间的依赖关系,为了解决这个问题在这里可以通过配置Spring框架中的applications-service.xml来建立一种依赖注入机制。经过Spring框架与Hibernate框架的结合把模块之间的类的耦合关系大大的降低了,因为Spring是一个服务于所有层面的应用程序框架,它提供了bean的配置基础,AOP的支持,JDBC的提取框架,抽象事务支持等等。

模块之间的层次关系变得比较清晰,这样使得代码可复用性和可维护性都得到了很大的提高,从而达到了缩短软件开发周期提高软件质量的最终目的。同时在以后系统的维护过程中对代码的调整也会变的容易许多,因此达到了一般软件开发设计人员对于程序设计的高内聚,低耦合的最佳效果。图8及图9中绘出了基于此种框架下系统平台管理员与一般用户相应的处理时序图。图10给出了次系统实现后的界面图。

7 结论

本文结合目前主流的基于J2EE平台和MVC设计模式的Web应用体系,采用Struts和Spring及Hibernate框架设计了一个基于Web的实验室信息管理系统。用一个多层体系来作为web应用程序的高级体系结构,Spring框架能被用于业务逻辑层管理业务对象,提供声明性事务管理和资源管理。Hibernate是一个强有力的O/R映射框架,提供集成层的服务。Spring和Hibernate能很好地结合。

通过将Web应用程序划分成不同的层和面向接口编程,每一层的技术可以采用相应的技术来取代,如表述层技术有Struts、Tapestry等。每一层的数据、规则和逻辑可以独立更新。应用程序中采用控制转换(IoC)来整合业务逻辑层和集成层,而使用Service Cotroller的设计模式来整合表述层与业务逻辑层,使系统的开发工作更简单、容易。这样的应用系统具备易维护性、兼容性、高效性、安全性和友善性等特点,该系统的建成大大提高了实验室的管理水平和工作效率,减少了实验室开支,提高了产品质量,为领导决策提供了可靠的数据,增强了企业的竞争力。

参考文献:

[1] 孟庆强,宗平.J2EE与三层Web应用开发[J].计算机与现代化,2004,103(3):50-53.

[2] 潘利群,李耿.MVC模式在J2EE中的实现[J].2004,26(5):52-54.

[3] Holmes J.Struts程序员查询辞典!Programmer's reference[M].孙燕,译.北京:中国铁道出版社,2005.

[4] 袁续峰.基于Spring框架的AOP编程[J].计算机与现代化,2006(1):119-120.

上一篇:基于状态模式的应用研究 下一篇:高校团委管理信息系统的设计与实现