基于Spring MVC的灵活查询技术在水路运政业务中的研究与应用
2016-09-27刘利静燕鹏飞
刘利静,燕鹏飞
(中国交通通信中心,北京 100011)
基于Spring MVC的灵活查询技术在水路运政业务中的研究与应用
刘利静,燕鹏飞
(中国交通通信中心,北京100011)
本文通过研究灵活查询技术,总结Spring MVC框架优势,分析Hibernate核心内容,设计灵活查询总体框架结构,最终实现灵活查询技术在水路运政中的应用,并完成业务元数据的灵活实时查询、导出功能。
水路运政;Spring MVC;灵活查询
1 引言
由于水路运政管理运作上的需要,管理部门需要大量快速、准确并稳定运行的系统来处理海量的数据信息。数据查询是水路运政系统使用频率较高的模块,该模块在水路运政管理中使用范围广、频度高[1]。
水路运政系统涉及到数据有:基础数据、证书数据、代码集数据等。基础数据包含企业相关信息、船舶相关信息等;证书数据包含国内水路运输经营许可证、船舶营业运输证等;代码集数据包含船舶类型码表、行政区划代码表等。数据查询维度包含有时间维度、船舶类型维度、经营范围维度等。水路运政管理过程中需要查询的数据往往不是单方面的,而是多种类型数据多重维度结合进行查询,查询输入数据不断变化。
灵活查询可以根据业务和管理的需求变化,灵活定制查询并能在线统计、输出所需要的统计报表,完成数据导出。因而在水路运政中应用灵活查询技术,可以真正的满足“随需应变”的需求。
2 灵活查询工作机制
2.1灵活查询分析
灵活查询结果通常是具有行列统计的二维表。统计查询包含四类信息:标题信息、标题统计条件信息、标题代码信息和表关联关系信息。其中,标题信息是数据库表字段定义信息,包含有表标题字段类型、字段长度等信息;标题统计条件信息为执行统计服务,查询条件输入,包含有等于、大于等于、小于等于、模糊查询等;标题代码集信息,如数据记录生效描述信息“生效”在数据库中实际存储的是其在生失效代码表中对应的代码“12”,代码表中的代码集一般都是由数字或字母组合生成;表关联关系数据存储是不同表数据进行关联的字段信息。
通过以上分析可知,要实现灵活查询的通用性和灵活性,一方面,灵活查询引擎要能够查询业务数据库中所有可统计信息进行统计;另一方面,要能够通过灵活查询定制页面制定出所有可统计信息的数据查询。
2.2灵活查询技术方案
灵活查询可以实现可视化的定制数据查询条件,并且能随时对条件进行调整,且查询人员能够方便地查看已选查询条件,并能自行删减。为了实现灵活查询相应的功能,提高开发的灵活性,增强系统的可扩展性,灵活查询功能使用MVC开发框架,引用开源的Spring框架和Hibernate框架完成功能的实现。
2.2.1Spring MVC
Spring是一个开源框架,由Rod Johnson创建,它是为简化企业级系统开发而诞生的。框架的主要优势之一就是分层架构,分层架构允许选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。
图1 Spring MVC框架
Spring框架所支持的MVC模式具体的实现是围绕分发器设计,DispatcherServlet将请求分发到不同的处理器,如图1所示。框架还包括可配置的处理器映射、视图解析、本地化、主题解析、支持文件上传等。
Spring框架提供的MVC有以下几个特点[3]:
⊙清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器等。
⊙直接将框架类和应用类都作为JavaBean配置,包括通过应用上下文配置中间层引用。
⊙可重用的业务代码,而不需要代码重复:可以使用现有的业务对象作为命令对象或表单对象,而不需要在ActionForm的子类中重复它们的定义。
⊙可定制的处理器映射,可定制的视图解析:灵活的模型可以根据名字映射。
2.2.2Hibernate
图2 Hibernate核心接口类
Hibernate是对JDBC进行了轻量级的对象封装,基于Java的开源的持久化中间件,是一个全自动对象/关系数据库(Object/Relation Mapping ORM)映射工具,是一个轻量级的持久层框架,提供数据查询和缓存功能[4]。如图2所示,Hibernate的核心接口有:
⊙Configuration类的作用是对Hibernate进行配置及启动。Configuration类的实例定位映射文档的位置,读取配置,然后创建SessionFactory对象。
⊙SessionFactory接口负责初始化Hibernate,创建Session对象,每个数据库指定一个SessionFactory。
⊙Session接口负责执行被持久化对象的CRUD(数据增加Create、读取查询Retrieve、更新Update和删除Delete)操作。
⊙Transaction接口是可选的API,实现事务控制。
⊙Query和Criteria接口创建并执行面向对象的标准化查询[5]。
2.2.3灵活查询总体架构
根据灵活查询系统的整体需求及各模块业务需求,为了实现高内聚、松耦合的特性,采取Spring MVC作为整体系统框架,将Web层进行职责解耦,基于请求驱动,使用请求-响应模型[6]。总体架构如图3所示。页面访问层采用JSP,使用为MVC模式设计:分离可视化设计和应用程序逻辑,将Java对象通过封装,以变量方式在页面中显示。
服务层采用Spring MVC实现依赖注入、事物控制、对象关系映射集成、应用上下文等管理,按照标准化的规范设计。
数据访问层使用开源的Hibernate框架,使用注解来配置和原始映射,将接口和Java的对象映射成数据库中的记录。
图3 灵活查询技术架构图
3 灵活查询功能设计与实现
3.1灵活查询功能的整体结构
通过以上分析得知,灵活查询需要采集标题信息、标题统计条件信息、标题代码信息和表关联关系信息。灵活查询为了便于数据处理,在进行整体功能划分时,划分为技术元数据管理、业务元数据管理、主题元数据管理及元数据应用管理四大模块。灵活查询整体结构图如图4所示。
图4 灵活查询整体结构图
技术元数据管理是整个灵活查询功能数据的来源,是所有业务数据的输入的入口,主要包含有:数据源管理、表管理、视图管理、对象关系管理、数据采集。数据源管理可以添加多个业务数据库,表管理进行数据表的新建、字段设置等操作。视图管理可以通过SQL创建视图,可以简化多个表之间的关系,如水路运政系统中可以将证书信息表与证书扩展信息表之间,通过视图将1∶N的多表关系转化成一张表中。对象关系管理进行数据库表关系对应配置,包含1∶N,N∶1,M∶N关系。数据采集是将数据源下的数据表内容加载,可以根据实际情况采集表数据信息。
业务元数据管理是在技术元数据基础上对数据业务关系进行再加工处理,是整个灵活查询的核心内容,包含数据集管理、数据子集管理、数据子集关系管理、数据权限管理、业务术语管理、代码集管理。数据集管理将数据源中的数据加载到业务元数据管理中,并对外进行发布,只有已发布的数据源,数据子集管理、数据子集关系管理以及元数据应用管理模块才能进行使用。数据子集管理是将数据表、数据视图添加成功并发布。在数据子集管理中增加字段与代码集映射。数据子集关系管理进行业务元数据关联关系配置。数据权限管理可以设置用户角色访问权限,不同角色访问内容不同,可操作的数据不同。代码集管理主要进行码表内容的配置,新增码表,如行政区划、生失效状态、船舶类型等。
主题元数据管理主要进行的是指标管理、维度管理、模型管理,是对业务元数据管理再派生数据处理。
元数据应用管理主要包含综合查询、灵活查询及主题分析,其中灵活查询是业务人员使用,用于页面数据查询条件的输入,完成数据灵活查询并进行查询结果导出。
3.2灵活查询在水路运政业务中的应用实现
水路运政系统的建设紧密结合建设任务需求,充分考虑系统工作的实际条件和环境,确保了技术可行及功能适用,在设计上采用面向服务(SOA)的体系架构[7]和面向对象(OO)的开发方法,并通过分层体系结构提供各层之间的规范化接口,为系统的扩展提供有力的支撑。
灵活查询在水路运政业务融合之后,使得数据查询更加便利。整个操作流程包含基础数据配置流程、灵活查询条件配置流程及用户实时查询流程。基础数据配置包含有技术元数据配置及业务元数据配置,技术元数据配置内容是业务元数据配置的基础,业务元数据的配置发布,对外提供最终的访问信息,是灵活查询条件配置的前提。用户实时查询流程是水路运政面中灵活查询操作的最终步骤,显示数据查询结果,进行数据编译,完成数据导出。
具体内容如下:
(1)基础数据配置。业务人员进入灵活查询系统,在技术元数据中,新增水路运政数据源,在数据采集中选择水路运政数据源下的数据表进行采集,如企业信息相关表、船舶信息相关表、证书信息相关表。当需要进行数据派生查询的时候,在表管理中新增派生表信息。由于证书与证书属性信息扩展表存在一对多关系,可以配置视图,视图可以通过SQL语句进行新建,并在水路运政数据库中同步创建。表和视图采集完成后,建立对象管理系管理,建立表与视图之间、表与表之间、视图与视图之间的对应关系配置,完成基础数据配置操作。以上配置数据,从水路运政系统读取表属性信息,之后保存到灵活查询数据库中,为之后灵活查询配置提供基础。业务数据在技术元数据基础上对外发布服务,只有对外发布的数据信息,综合应用管理中的灵活查询才能访问、取用。
(2)灵活查询配置流程。业务人员进入灵活查询系统,新建灵活查询实例,进行页面定义,设置页面目录、页面内容定义。从基础配置管理中对外发布的数据项中,选择数据表项,设置数据项字段内容,根据实际情况设置显示名称、对齐方式、排序方式及扩展信息。每个字段也可以设置限制条件,证书信息查询中经营范围设置实例如图5所示。
图5 灵活查询设置
(3)用户实时查询流程。灵活查询配置完成后,用户登录系统后进入灵活查询配置菜单页面,系统验证用户权限。显示已经配置完毕的查询功能。选中某查询功能,输入查询条件,查询结果返回到列表中,在列表中也可以再次设置筛选条件,最后导出查询结果。完成灵活查询全流程操作,如图6所示。
图6 水路运政系统中灵活查询流程
4 结束语
本文通过介绍水路运政情况,说明了水路运政系统中存在多种类型数据多重维度,且查询条件不断变化的需求,现有系统未能很好满足以上需求的情况。通过对灵活查询工作机制剖析,引入灵活查询技术,融合查询技术的水路运政能很好的解决以上问题,达到了预期的目标并提升了系统的服务能力,有效地实现了系统的实施查询导出功能。而灵活查询配置优化,引擎查询优化是后续服务继续提升与改进的方向。■
[1]刘嫚,陈梦东,甘雨.管理信息系统中统计报表灵活定制的设计与实现[J].计算机应用与软件,2005,22(9):79-81
[2]Craig Walls,Ryan Breidenbach.李磊,程立,周悦虹译.Spring in Action[M].北京:人民邮电出版社,2007:331-332
[3]Matt Raible.Spring Live[M].Sourcebeat,LLC,2004(11):2-15.
[4]汪萌,曲俊华.基于Hibernate技术的持久层解决方案与实现[J].计算机系统应用,2010,19(3):154-158
[5]孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社,2005.77-79
[6]李刚.整合Struts+Hibernate+Spring应用开发详解[M].北京:清华大学出版社,2007.325-326
[7]王磊.基于SOA的报表服务模型的研究与设计,上海交通大学,2009
Research and Application of Flexible Query Based on Spring MVC in the Waterway Transportation System
Liu Lijing,Yan Pengfei
(China Transport Telecommunication & Information Center,Beijing,100011)
This article by studying the flexible query technology,summarizes the advantages of Spring MVC framework,analyzes the core content of Hibernate,and designs the overall frame structure of flexible query.Finally this article realizes the application of flexible query technology in the waterway transportation system,and completes the flexible real-time query and export function of business metadata.
Waterway transportation;Spring MVC;Flexible query
10.3969/J.ISSN.1672-7274.2016.09.001
TP392,TP391文献标示码:A
1672-7274(2016)09-0001-05
刘利静,女,1987年生,河南新乡人,现任职于中国交通通信信息中心,研究方向为交通信息化。
燕鹏飞,男,1981年生,内蒙古乌兰察布市人,现任职于中国交通通信信息中心,研究方向为交通信息化。