




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库管理通用平台设计方案第一章 绪 论1.1 平台的需求分析通用数据平台是一个支撑企业信息化数据集成的应用平台,需要在给企业用户提供便利、实用和强大的应用环境的同时,还提供统一信息交换,实现企业现有应用系统间数据的整合与集成。企业信息化的过程就是要将企业运作处理的一切程序、资料变成信息资源, 通过信息化的手段进行处理,这些信息资源就来源于企业的设计、工艺、生产、销售、采购等各个环节,完善这些环节的信息流的管理将直接加快企业处理信息的过程,从而提高企业的运行效率;而充分利用有效的信息工具,特别是采用统一的数据平台,可以加速企业的整个运作过程,从而达到降低成本的目的;在提高质量方面,信息工具所发
2、挥的作用也是不可忽视的,它将大大减少人为处理过程中错误、误差,并提高准确率和精度。在解决企业信息化的过程中,企业采用的信息化系统不尽相同,可能差异很大,包括系统的编写语言、开发工具、应用环境等等,通用数据平台所需解决的主要问题之一就是整合企业已有的数据资源,充分利用已有的信息,更好地为企业服务。1.2 总体功能目标1.2.1 支持异构数据库支持国内外常用数据库异构;支持多库的网络分布,平台所联接的数据库可位于网络中不同的主机上支持不同类型数据库的热切换;平台所联接的数据库可在程序运行中更改,实现软切换。连接和访问分布式数据库,提供数据的可靠传输,解决不同软硬件和网络环境中系统的通信问题,实现信
3、息孤岛之间的联通。1.2.2 屏蔽数据库类型的差异性对企业应用开发人员屏蔽不同数据库之间的差异。开发人员只需要专注于业务需求,一次开发就可以应用于多种数据库系统,通过简单的配置就可以实现底层数据库的切换。数据库可配置、定义,支持常用数据库:SQL、ORACLEVFP、ACCESS、EXCEL,以及国产数据库DM、OpenBASE 等平台配置自动维护;由定义器完成平台的配置,数据库定义与具体类型无关;通过使用“库-视图-关联定义器” 来实现基于平台的软件与数据库类型无关;能降低应用软件规划难度;实现大大减少应用软件的开发量。1.2.3 简化数据库访问能结合配置和应用逻辑生成 SQL 语句;能根据
4、部分新的要求产生完整的 SQL 语句;能产生复杂逻辑的 SQL 语句组合;能自动识别数据类型;生成符合格式的SQL 语句;能提供尽可能多的错误拦截、识别、信息提示和存盘等功能。实现对分布异构数据库的透明访问。实现数据的集中和汇总,使不同格式、不同数据管理系统中的数据能够相互交流和转换。保持已有系统的自治性,在使用数据应用开发平台的同时不影响已有系统的正常运行。具有良好的开放性和适应性,能够适应向平台中增加新的数据库系统、数据库升级和企业业务需求变更等变化。1.2.4 实现多种业务逻辑能动态生成和执行 SQL 语句;能产生和调用存储过程,由触发器等执行;调用底层 API 能获取数据库、表结构信息
5、;实现动态业务逻辑变更提供面向对象的数据事务组件;供搭建应用程序构成复杂的数据服务逻辑。1.2.5 提供通用的数据管理方法将常用的操作沉淀为程序资源,如:插入、删除、更新、查找、筛选、统计等操作,规范数据操作接口;操作函数的参数格式统一,便于理解和可扩展;数据库升级只需改造平台,对应用程序几乎无影响;应用程序编程员不必太了解数据库技术;减少重复代码,实现一处维护多处受益。1.3 总体性能目标通用数据平台要确保数据的有效性、机密性、完整性、安全性、可靠性,确保在日常维护或是意外崩溃时通用数据平台可以正常运转,确保系统单个服务故障不影响通用数据平台的运行。平台提供系统运行日志,记录平台运行状况,提
6、供平台维护工具;采用统一的标准数据总线及功能丰富、面向应用的集成代理机制,来确保平台具有足够的可扩展性。通用数据平台适应国产主流的数据库:DM、OpenBASEKingBASE,以及国际主流数据库 Oracle,MS SQL Server 等。1.3.1 业务系统与数据库的分离平台支持用户自定义业务系统的相应的功能,留出二次开发的接口供用户在平台的基础上进行开发。如 PDM 等系统可以充分利用平台现有的接口,进行相关的业务系统的开发。1.3.2 实现不同应用业务系统与平台部分分离,实现业务应用的动态启动和停止。平台利用服务监听器这一机构可以实现:当一个业务应用启动的时候,平台会将属于这个业务应
7、用的用户数据源启动;当一个业务应用停止的时候,平台会将属于这个业务应用的用户数据源关闭。1.3.3 支持分布式应用支持分布式运行方式,但只维护一份配置文件,平台使用配置管理器来统一读取系统的配置信息,平台的各种分布式的组件在启动的时候会自动连接到一个运行的配置管理器来获得必要的信息。1.3.4 集成化的平台管理工具提供完善的图形化的管理工具,其中集成了对业务应用的所有功能进行管理,业务数据的备份/恢复,数据源的配置,用户的权限管理工具,数据库对象的创建/修改/删除。1.3.5 在线日志管理平台日志系统要为用户提供独立可配置可扩展的日志输出机制。基于通用数据平台进行二次开发的时候,对调试信息进行
8、追踪记录。定义好追踪等级,对平台事件进行归类,提供统一的事件代号。平台运行过程中,对平台以及架构在平台之上的业务系统进行跟踪,记录重要的改变,并给出相应的恢复提示。1.3.6 分布式事务支持平台的事务处理功能模块要保证在一个工作单元中的数据的完整性,构造平台自己的事务管理机制,简化分布式应用的构造,并且可以为用户提供跨多种数据库的分布式事务处理,实现了两阶段提交协议,保证数据的完整性和一致性。1.3.7 通用业务逻辑对象管理及其调用平台使用通用对象模板技术,提供通用数据对象的定义、存储、编辑、查询、统计工具,统一规范、共用资源。更好的进行资源的管理,为快速部署信息化领域的解决方案提供技术支持。
9、第二章 通用数据平台体系结构2.1 体系架构本课题基于对国产数据库技术的研究,从制造业信息化企业应用软件的需求入手,结合中小型制造业企业的特点,提出并实现了面向中小企业的基于国产数据库的制造业信息化应用软件集成理论和实现的技术路线。项目构建基于国产数据库的通用数据平台,提供基于国外数据库和国产数据库的应用软件的整体解决方案。通用数据平台架构在应用程序和数据库的中间,见图 3.1。负责应用程序与数据库服务器直接的通信,应用逻辑(SQL 语句解析,数据提取,事务控制等) 在通用数据平台这个中间层进行处理,业务逻辑在中间层进行维护和实现,避免了因业务变动而对众多应用程序产生的冲击。图 2.1 基于国
10、产数据库的制造业信息化应用软件的体系架构2.2 技术路线课题立足于跟踪数据库应用技术的发展和研发数据库连接的通用数据平台技术开目数据平台(KMDP)。KMDP 不仅要充分利用数据库的 SQL、范式等标准访问不同的数据库,而且可以超越数据库的差异,通过一种统一的自然语言(KMSQL),识别数据库类型,充分利用不同数据库所提供的核心技术。KMDP 要能够为开目产品系列提供对数据库的分布、安全性、效率、面向业务的对象数据操作、数据分析、数据自维护、数据检验、数据库对象动态生成、数据柔性化等高级的一体化解决方案。KMDP 是一种服务于开目全线产品的通用开发平台和运行支撑平台,故总是跟踪数据库的最新技术
11、,以满足开目产品发展的需要。KMDP 基于平台和组件化技术,通过 ODBC/OLEDB/JDBC 及其 API 访问数据库,它主要提供语义翻译、数据缓冲、错误拦截、业务数据批处理等预处理和后续处理功能。2.3 通用数据平台模式图 2.2 构架在应用与数据库间的中间层数据平台模式2.4 通用数据平台主要模块以及工作流程通用数据平台的最主要的目的是在分布异构数据库之上为用户提供一个开放的、统一的信息处理环境,允许用户使用统一的接口存取分布、异构的多个数据库上的数据。整个通用数据平台采用客户 -通用数据平台-服务器三层体系结构。一个完整的应用系统分为三层:用户应用层(CAPP、PDM 等应用程序,应
12、用程序接口)、数据服务层(存储过程解析/转换、数据库备份与恢复、安全管理、数据管理、模式管理、数据库代理)和基础设施层(平台引擎)。用户应用层包括用户在平台基础上建立起来的应用系统(开目 PDM 等应用软件系统),以及在应用和通用数据平台之间的应用程序接口;数据服务层为用户应用提供透明数据访问和存取服务,是应用和分布数据库之间的桥梁;基础设施层包括平台引擎中的内存对象、SQL 解析等。通用数据平台的最终目的是在用户应用层和基础设施层之间建立透明的服务,处于中间层次的数据服务层是系统的关键。通用数据平台在分布异构数据库系统之上建立了一套全局模式,在顶层为用户提供一个统一的视图,底层数据库的分布和
13、异构对顶层用户是透明的,用户可以像使用一个数据库一样使用分布异构数据系统12。用户对局部数据库的操作通过统一的用户视图进行,操作以全局事务的形式提交给平台系统。全局事务使用全局模式表示,是针对全局数据进行的操作。通用数据平台的框架见图 3.3。通用数据平台的主要模块如下:2.4.1 平台引擎通用平台的基础设施,在内存中以通用对象模板来组织内存对象,实现通用数据平台的 SQL 解析,对异构数据库的数据对象提供通用的操作。2.4.2 异种数据库存储过程解析/转换以自定义的 KMSQL 中性语言为基础,实现异种数据库存储过程之间的相互转换,实现一次编写,各数据库环境下运行。2.4.3 数据库备份与恢
14、复模块基于平台引擎的内存数据对象,以及内存索引对象,定义了一套通用的数据对象模板,并定义了一种通用的数据文件,用于存储异构数据库的数据。基于对象模板和通用数据文件实现了异种数据库之间数据的导入/导出。2.4.4 安全管理模块以 RBAC(Role-Based Access Control-RBAC)模型为基础,实现对异构数据库数据的访问权限控制,防止非法用户越权访问数据。2.4.5 其它模块数据管理、模式管理、数据库代理等模块实现对异构数据库数据的一般业务逻辑操作,包括数据创建与删除等。2.4.6 平台工作流程平台的工作过程如下:用户应用使用内嵌 SQL 语句的高级程序语言向平台提交数据服务请
15、求,查询管理器的语言解释器模块根据全局模式对服务请求语句进行分析和验证,经过完整性检查和初步的优化后得到全局查询计划。全局查询计划是使用全局模式表示的,必须分解到相应的局部数据库去执行,这部分工作由查询分解器完成。当一个局部数据库的查询语言与全局查询语言不同时,还需要进行查询转换。经过查询转换后得到了可以在局部数据库执行的一系列子查询, 这些子查询经过事务处理器的协调,得到了和原全局查询等价的事务系列,这些事务系列送交各局部数据库执行,返回的数据经由数据管理器进行合并等操作, 最后返回给用户应用程序。图 2.3 应用开发平台的框架(主要模块),以及各模块间的相互关系第三章 元数据库的设计与实现
16、任何一个管理信息系统访问数据库方式无非就是查询、增加、删除、修改等几类操作,所不同的只是所访问具体数据的实际意义不同而已。所谓的数据库通用平台就是抛开具体的查询、增加、删除、修改,设计出一个适合各种不同意义数据的通用平台,这样在进行具体的访问时,只需要调用这个通用平台并配置相应的参数,就可以实现所需要的功能。对于这样的访问方式,传统意义的数据库设计满足不了,因为传统的数据库设计都是针对于具体的数据设计的。这里就引入了元数据的概念。元数据是关于数据的数据。它是一种广泛存在的现象,在许多领域有其具体的定义和应用。在软件开发领域,元数据被定义为:在程序中不是被加工的对象, 而是通过其值的改变来改变程
17、序的行为的数据。它在运行过程中起着以解释方式控制程序行为的作用。在程序的不同位置配置不同值的元数据,就可以得到与原来等价的程序行为。元数据描述数据的结构和意义,就象描述应用程序和进程的结构和意义一样。元数据是抽象概念。当人们描述现实世界的现象时,就会产生抽象信息,这些抽象信息便可以看作是元数据。例如,在描述风、雨和阳光这些自然现象时, 就需要使用”天气“这类抽象概念。还可以通过定义温度、降水量和湿度等概念对天气作进一步的抽象概括。在数据设计过程中,也使用抽象术语描述现实世界的各种现象。在本系统中元数据库存储了数据库通用支撑层的控制和描述信息,包括关于菜单结构、服务关联、数据处理和访问的控制以及
18、客户端显示等方面的元数据。是整个平台能够实现统一处理的基础和关键部分。在元数据库中包含的关键数据表有服务元数据表、组织结构元数据表、基表查询元数据表、基表查询列信息数据表等,下面分别介绍。3. 1 服务元数据表服务元数据表是一记录每一个服务的描述信息。其表结构如表 4-1 所示。表 3-1 服务元数据表表 3-1 服务元数据表(续)在这个表里,服务标识码是主键,唯一标识了每一个定制的服务,通过这个服务标识码的命名必须遵循提前约定的规则,使服务处理模块能根据服务标识码确定要操作的基表;服务名称、服务描述记录了一些辅助的描述信息;服务相对路径和服务文件名记录了提供服务的程序地址。当系统需要添加新功
19、能时,首先通过通用平台提供的定制界面进行定制,也就是设置相应参数,然后将这些参数保存到这个表里,这样就为以后的服务处理模块提供了入口参数。3. 2 组织结构元数据表组织结构元数据表主要记录关于管理信息系统菜单结构以及与服务关联的信息,为菜单的自动生成和处理提供参数数据,系统中每一条菜单项在组织结构元数据表中对应一条记录说明。其表结构如表 3-2 所示。表 3-2 组织结构元数据表表 3-2 组织结构元数据表(续)其中菜单项标识码是主键,唯一标识每个菜单项;菜单采用树型结构,所以用父结点标识码记录上一级菜单,结点顺序号和菜单名称记录了菜单在客户端展现的情况;节点类型记录了菜单的类别,如根节点、中
20、间节点、叶子节点等不同的节点类型。服务标识码提供了与服务元数据表相关联的接口,也就是菜单所对应的服务。通过数据库表之间的关联关系,找到菜单所对应的服务的元数据,通过这些元数据,就能对菜单进行统一的显示和处理。3.3 基表查询元数据表基表查询元数据表是为了定制查询服务而建立的表结构。该表主要存储了每一个查询服务与基表或视图之间的映射关系。其表结构如表 3-3 所示。表 3-3 基表查询元数据表每一类查询在此表中有一条记录说明,表中的查询标识字段是主键,唯一标识每一类查询。查询表名记录要访问的基表或视图,其它字段都是记录与查询相关的辅助信息,比如查询涉及到的某些隐含查询条件等等。3. 4 基表查询
21、列信息数据表基表查询列信息数据表定义了每一个查询服务中各列与相应的基表各列之间的一一映射关系。也就是说这个表中记录了查询的结果显示在客户端的具体形式的控制信息,比如:数据类型、长度、取值范围等等详细信息。具体的表结构如表 4-4 所示。表 3-4 基表查询列信息数据表表 34 基表查询列信息数据表(续)基表查询列信息数据表与基表查询元数据表之间通过查询标识关联,是多对一的关系。基表查询元数据表记录了定制的服务与基表之间的映射关系,但查询毕竟是要对基表中的相关字段进行处理,所以就用基表查询列信息数据表记录基表中每一列查询的详细信息数据,在要查询的基表中有多少列,基表查询列信息数据表中就会有多少个
22、表与之对应,因而是一对多的关系。在一个管理信息系统中的查询会因需求的不同而不同,因而基表查询列信息数据表是元数据库中最复杂的一个表。可以把表中的信息分成四类:一类是一般性信息:列名、列序号、列描述、列数据类型、列长度、列小数位等。这些基本与基表中的信息一致。第二类是与查询条件相关的数据。查询条件列标志,用于描述与列相关的查询条件约束:是否作为查询条件,精确查询还是模糊查询等等。这些信息分别用不同的值表示。超级链接类型和超级链接查询标识是定义是否需要根据此列深入查询详细内容,如果需要则定义超级链接查询主键和超级链接查询值列。第三类是定义在客户端显示的字段及其显示形式。浏览标志定义了该列是否需要在
23、查询结果中显示出来。当在屏幕上此列位置显示的结果不是这列存储的原始信息,而是需要根据此列进行转换的信息时,就用到了列类型、查找表主列、查找表名、查找表结果列这几个字段。比如性别,在数据库基本信息表中,用数字 0 或 1 表示男女性别,但是当显示在客户端时,如果还是用 0, 1 表示性别, 对客户来说界面就不友好,这时就需要转换成汉字形式。初值、查询条件初值分别是在查询页面和更新页面中所显示出的初值。还有显示对齐方式、显示颜色等级等字段为此列在显示时的一些细节信息。第四类是为字段的修改做准备的,主要有修改标志这个字段。如果要修改表中的某一个字段,就定义这个修改列标志。第四章 数据库通用平台的设计
24、与实现数据库通用平台的关键部分除了元数据库的设计外,还有数据库通用支撑 层。这个支撑层是介于数据库层和应用层之间的一个中间层,也可以说这个支撑层是数据库与实际应用之间的一个桥梁。无论是在开发一个新的管理信息系统还是为己有的系统增加新功能,只要按照数据库通用平台的规则配置相应的参数, 该平台就能自动的连接数据库,进行数据处理,开发者并不需要去关心数据库详细操作。这样就会减少很多重复编码,给开发者、系统维护者带来了极大的方便。数据库通用支撑层主要包括基础模块、服务定制模块和服务处理模块三大部分。基础模块主要功能是数据库的连接、关闭,所有对数据库的操作都是基于这个模块。服务定制主要是为管理信息系统的
25、开发人员和系统维护人员设置的。对于开发一个新系统的情况,需要先把定制服务模块移植到系统中,然后再根据需求分析在定制服务模块进行相关的定制,服务处理模块就会根据这些定制信息进行处理并在前台展现出来;对于系统维护的情况来说,定制服务模块已经包含在系统里,只要定制新加的功能就可以了。服务处理模块的功能就是在系统运行时,根据服务定制模块定制的参数(这些参数保存在元数据库中)进行统一处理。下面分别介绍这三个模块的设计与实现。本通用平台虽然是一个相对独立的构件,但在应用中必须与具体的管理信息系统集成才能实现其功能,所以关于本平台的测试信息将在第六章介绍。4. 1 数据库接入技术应用程序与后台数据库的交互是
26、通过数据库的接入技术来实现的,对于管理信息系统来说,访问数据库是最重要的一个环节。各种开发工具或者程序设计语言连接数据库的技术不一样,现今有很多的组件来实现,使得数据库的访问和操作变得更加高效和快捷。在本数据库通用平台中,访问数据库是通过 JDBC L Java Data base Connectivity)接口进行的。JDBC 是一种可用于执行 SQL 语句的 Java 语言的数据库访问接口,它由一些Java 语言编写的类和界面组成。JDBC 为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯 Java 语言编写完整的数据库应用程序。由于 Jav
27、a 语言与平台无关,所以利用 JDBC API 写成的访问数据库的程序具有很好的通用性,移植方便。通过使用 JDBC,开发人员可以很方便地将 SQL 语句传送给几乎任何一种数据库。用 JDBC 写的程序能够自动地将 SQL 语句传送给相应的数据库管理系统(DBMS。不但如此使用 Java 编写的应用程序可以在任何支持 Java 的平台上运行, 不必在不同的平台上编写不同的应用。Java 和 JDBC 的结合可以让开发人员在开发数据库应用时真正实现“Write Once ,Run Everywhere ! Java 具有健壮、安全、易用等特性,而且支持自动网上下载,本质上是一种很好的数据库应用的
28、编程语言。它所需要的是 Java 应用如何同各种各样的数据库连接,JDBC 正是实现这种连接的关键。1. JDBC 的任务简单地说,JDBC 能完成下列三件事:1)与数据库建立连接;2)向数据库发送 SQL 语句;3)处理数据库返回的结果。2. JDBC一种底层的APIJDBC 是一种底层 AP1,这意味着它将直接调用 SQL 命令。JDBC 完全能胜任这个任务,而且比其它数据库互联更加容易实现。同时它也是构造高层 AFI 和数据库开发工具的基础。高层 API 和数据库开发工具应该是用户界面更加友好,使用更加方便,更易于理解的。但所有这样的 API 将最终被翻译为象 JDBC 这样的底层 AP
29、I。目前两种基于 JDBC 的高层 API 正处在开发阶段。3. JDBC 两层模型和三层模型JDBC 支持两层模型,也支持三层模型访问数据库。两层模型中,一个 Java Applet 或者一个 Java 应用直接同数据库连接。这就需要能直接被访问的数据库进行连接的 JDBC 驱动器。用户的 SQL 语句被传送给数据库,而这些语句执行的结果将被传回给用户。在三层模型中,命令将被发送到服务的“中间层”,而“中间层”将 SQL 语句发送到数据库。数据库处理SQL 语句并将结果返回“中间层”,然后“中间层”将它们返回用户。“中间层”一个优势是可以进行对访问的控制并协同数据库的更新,另一个优势就是如果
30、有一个“中间层”用户就可以使用一个易用的高层的API,这个 API 可以由“中间层”进行转换,转换成底层的调用。而且,在许多情况下,三层模型可以提供更好的性能。JDBC 是允许从一个 java“中间层”访问数据库的接口。使用 JDBC 连接数据库方式如图 4-1 所示:图 4-1 JDBC 连接数据库方式在 JDBC 中,连接通过 java. sql. Connection 接口实现。连接是通过调用驱动程序的 Connection(连接)方法获得的。创建一个连接后,可以调用它的方法获得和设置连接选项、管理事务和创建 statement(语句)对象。4.2 基础模块在 Java Bean 中每一
31、次需要数据库操作时都要进行一系列相同的操作:设置驱动程序,连接数据库,生成一条SQL 语句,对数据进行处理,最后断开与数据库的连接。将这些操作全部放到每一个Java Bean 中是非常繁琐的,因此有必要把数据库的连接和断开放到一个独立的 Java Bean 中,在其它 Java Bean 中需要对数据库操作时,可以利用面向对象设计方法的继承机制,只要继承这个基础模块,就可以直接调用这个基础模块提供的函数完成数据库连接、断开操作、数据处理等,不用再写相应的代码,只要组织出不同的 SQL 语句就可以了。从而提高了代码的重用性。由于每一条 SQL 操作语句都要使用 JavaBean 连接数据库,当
32、JSP 页面或者Java Bean 需要频繁访问数据库时,必然频繁的连接与断开数据库。一般管理信息系统是面向很多用户的,对系统频繁的访问更是显得很突出,连接数据库不仅要开销一定的通信和内存资源,还必须完成用户验证、安全上下文配置等任务, 因而往往成为最为耗时的操作。为了提高系统效率,本通用平台采用了数据库连接池。所谓数据库连接池就是一个存储数据库连接的容器,当应用程序需要连接数据库时,就直接从连接池中获取一个连接,当使用结束时,再将连接归还给连接池。这样一个数据库连接可以被很多应用程序的实例共享,无需每次与数据库交互时都进行数据库的连接和断开,可以大大提高访问数据库的速度。一个数据库连接池应具
33、备以下功能:1.连接池能够存储多个有效连接;2.能够为其它方法提供有效连接;3.能够验证连接是否正常;4.能够取回使用过的连接;5.如果连接池中没有可用连接,而此时使用中的连接数小于最大连接数,那么就创建新的连接提供给应用程序;6.连接池关闭时关闭所有连接。本系统中连接的数据库都是使用 JDBC 驱动器的,数据库连接池是由 Web 服务器 Weblogic 提供的。Weblogic 为开发人员提供了用来处理数据库连接的 JDBC 驱动程序,使每个数据库客户端共同分享一个或一个以上的数据库连接,从而可以提高程序的执行效率和减轻数据库服务器的负担。Weblogic 的数据库连接池具有以下功能:1.
34、从连接池获取(或创建)可用连接;2.把连接返回给连接池;3.在系统关闭时释放所有资源,关闭所有连接。那么如何使用 Weblogi。的数据库连接池呢?首先要配置好 WebLogic 中数据库(这里是 Oracle 数据库)的 JDBC Driver 的配置。配置好数据库连接池后,在JavaBean 中就可以直接调用 Weblogic 提供的一些接口函数获取数据库连接。从Weblogic 池驱动程序获取一个池连接的步骤如下:1.使用下面代码获取一个 Weblogic 池驱动程序实例:import java.sql.*;String driverName=weblogic jdbc.pool.dri
35、ver;Driver myDrivei= (Driver)Class.forname(driverName).newInstanceQ; 2.通过调用驱动程序的 Connection 方法,提供需要连接的池名获取一个连接。不需要提供用户名、口令和数据库名,因为这些细节由连接池在创建连接时处理。可以在 Properties 对象中传送连接池名,也可以将它添加到 URL 中。这里选择在一个 Properties 对象里传送,其代码如下:String driverURL= jdbc:weblogic:pool; Properties myProperties=new Properties();myP
36、roperties.put(connectionPoolID,OraclePool);Connection myConnection=myDriver.connect(driverURL;myProperties); 使用完一个连接后,最好关闭它,以释放不使用的数据库资源。关闭连接的代码同样也不用考虑连接是如何获取的。关闭一个连接的代码如下: Public static void closeConnection(Connection the Connection)try the Connection. close();catch (SQL Exception e)此方法传给一个池连接,Webl
37、ogic 池驱动程序不是物理关闭连接,而是使用 unused(未使用)来标记连接,然后将它返回到可用连接池。基础模块是一个数据库连接、断开的类:AppBaseBean. Java,这个类将对数据库的连接、数据处理、.及关闭操作都封装起来,其它继承了这个基础模块的Bean 访问数据库的方法就可以按照以下步骤进行:this.getDbTrans().open();/打开数据库连接组织出相应的 sql 语句ResultSet rs=this.getDbTrans().executeQuery(sql 语句); this.getDbTransQ.commitQ;/操作提交this.getDbTrans
38、().rollback();/操作回退this.getDbTrans().close();/关闭连接4.3 服务定制模块要调用数据库通用平台进行查询、修改、增加、删除等操作,必须给通用平台提供操作所需要的参数:操作类型、表名、显示字段、条件字段,.等。但这些参数怎么提供,提供怎样的格式呢?为了解决这个问题,我们在数据库通用平台中设计了一个服务定制模块,服务定制模块的主要功能就是完成各种功能的相关数据(参数)的定义,也就是元数据的定义过程,服务定制的实质就是将相应的元数据写入元数据库的元数据表中。需要定制的信息和功能有以下几个部分:1.菜单定制;2.具体服务定制;3.数据处理定制。菜单定制是整个
39、通用平台的入口,也就是说每一次调用通用平台都是通过菜单界面进行调用的。菜单定制就是定义系统菜单所需要的参数,通过服务定制模块提供的定制界面逐项定义菜单的结构。其实质就是给用户(一般是开发者或系统管理员)供一个友好的界面,这个界面将元数据库中的组织结构元数据表中的主要字段列出来,供用户填写,用户填写完毕,再将这些信息存入组织结构元数据表中,这样相应的菜单模块就会调用这些参数数据进行菜单显示。具体服务定制用于开发人员或维护人员根据管理信息系统的实际业务需求, 定制每一个相应的服务。通过这个模块将具体的数据处理与相应的菜单进行关 联。其设计思路同菜单定制部分相同,也是给用户提供一个友好的界面,并将用
40、户所填写的数据写入元数据库表的服务元数据表中。数据处理定制根据服务处理模块所需要的信息,提供一个界面让用户进行定制,在这个界面上用户确定需要操作的数据库表(视图)、操作条件、对表中每一列的说明、是否需要显示、是否需要超级链接、链接的内容、显示的方式等。这部分是整个定制模块的重点,系统为所定义的操作分配一个唯一的查询标识,相应的定义数据将通过定制界面写入基表查询元数据表和基表查询列信息数据表中。比如在远程教育系统中,需要查看学生的选课情况,就可以这样定制:先建立一个视图,这个视图将学生选课情况所涉及的所有字段(这些字段一般分布在不同的表中)集中在一起。然后在数据处理定制模块中进行定制,这个定制包
41、括视图的名字、查询条件(可能是时间、班级等)、视图中的哪些字段需要在客户端显示出来、那些字段的值允许修改等等,这些数据定义好了,这个查询定制就完成了。这个定制模块的思路理清了后,实现起来非常容易。无非就是往元数据库表中增加数据。具体的实现过程就不多介绍了。4. 4 服务处理模块元数据库和定制模块都是为服务处理模块提供参数做准备的。服务处理模块是整个通用平台的核心部分,也是整个通用平台中最复杂的一部分。从功能上来看,这个模块主要包括以下七个部分:1.查询模块;2.浏览模块;3.增加模块;4.单条记录修改模块;5.单条记录删除模块;6.单条记录详细信息模块;7.批量记录操作模块。这几个功能涵盖了管
42、理信息系统中的绝大部分的操作。拿远程教育系统中的查询校外学习中心名单和学生成绩这两个事件来说,从业务角度来说,这是两个毫不相干的业务,但我们从实现的角度来看,这两个事件都是进行查询操作,只是查询的表名、条件和最后得到的字段内容不同而己,所以这两个操作都可以调用数据库通用平台的查询模块来实现。前面第三章已经论述了整个信息系统的整体架构是基于 J2EE 架构的 B/S 结构,同时引入了目前比较先进的 MVC 设计模式,从设计实现的角度,我们可以将服务处理模块分成三个部分:1.菜单处理模块;2.后台数据处理模块;3.前端页面显示模块。这种模块分离的方式将数据处理与页面显示分开实现,这样做的最大好处是
43、利于维护,因为将数据处理和页面显示分开后,无论要修改哪一部分,都不会引起其它部分的改变,这样不但提高了效率,更减少了出错率。在这个通用平台中的菜单处理主要提供用户界面的菜单显示,接收用户的访问请求,也就是说获得后台数据处理和前端显示部分所需要的参数,并将这些参数传递给相应的模块。当然在整个管理信息系统中的菜单模块还要包括层次结构、权限判断等功能,但这部分不是数据库通用平台所涉及的范围,所以在这里只论述与数据库通用平台相关的部分。在前面的元数据库的设计中,我们看到在组织结构元数据表中有一个字段:模块标识码,而在服务元数据表中有:模块标识码、模块相对路径、模块文件名这三个主要字段,这些字段都与每一
44、个菜单项一一对应。菜单处理模块就是把这些数据作为入口参数,来显示所对应的菜单及菜单所对应的页面。这里要说明的一点是,管理信息系统中的整个菜单项并不都是调用数据库通用平台,总还会存在一些需要特殊处理的功能。所以在这两个元数据表中还有一些数据不是为通用平台服务的。那么怎么与之分开呢 ?这个问题是这样处理的: 在调用服务定制模块进行定制的时候,做一些特殊约定:在调用具体服务定制模块进行定制时,针对模块标识码字段的命名规则进行区分,如果是调用通用平台, 那么命名规则就是V 或 T+表名+顺序号”,V 代表的是视图,T 代表的是数据库基表,当针对某一个表或视图有多个查询时,就用顺序号来区分,从 A 开始
45、依次向后排列。如 V3001A 是针对视图 V3001 定义的一个查询标识。这样在菜单处理部分中,就会根据这些区别分别调用不同的页面进行处理。后台数据处理用于与数据库交互,得到所需要的数据。这部分用的开发环境是 JBUILDER 9,将这部分封装成一个独立的类 App Common Bean。这个类与元数据库表进行数据交互,其结构如图 4-2 所示.。App Common Bean 中的每一个标识(z 1-z9)都针对一个功能操作进行相应的数据处理:z1 代表查询模块,z2 代表浏览模块等。图 4-2 App Common Bean 的结构前端显示部分主要是用于页面显示,对数据不做任何处理,只
46、获取由Servlet 所创建的 Java Bean,即获得 App Common Bean 取得的数据,并将获得的数据按照定制的要求显示给客户端。显示处理包括多记录结果显示处理、批量记录数据更新处理、单记录详细显示处理、单记录数据更新处理这四大类通用处理服务。查询服务直接调用显示处理模块就可以了,这也是服务处理第一步要执行的,因为如果要进行更新,删除或者增加,必须要先把一些相关的数据显示出来,得到有关的元数据信息,才能对这些数据进行进一步的处理。这些元数据信息就是主要在元数据库表中存储的关于列显示的信息,比如显示的类型,初值, 宽度等等。在这个通用平台的研究与开发的过程中,我参与了整个系统架构
47、过程。主要工作除了上面介绍的外,在服务处理模块中还实现了三类支持不同操作类型的模块,下面分别详细介绍其设计过程。4. 4.1 查询模块的设计与实现我们先看一个查询语句的形式:Select 字段 1,字段 2.from 表 1 where 条件 1 and 条件 2.在定制查询的时候,字段、表名都可以是固定的,也就是说每一次查询这些字段都是不变的。但是在条件中,每一次查询可能会有所不同。比如查询两个学生的选课情况,都是查询的表是相同的,要得到的字段也是相同的,但查询的条件中,学生学号这一条肯定不同。这就要求我们在实现查询模块的时候,除了从元数据库表中提取定制的参数外,还要提供一个用户输入查询条件
48、的界面,这个界面接受每一个具体查询的参数。从设计上看,这个界面是根据菜单选择传入的唯一的查询标识找出基表查询元数据表和基表查询列信息数据表中对应的的参数,这些参数的类型在元数据库设计一章己经介绍了,这里要介绍的是针对这种元数据库设计,如何使查询模块的功能能符合通用的需求.我们在研究了多个行业的管理信息系统后,总结出这样几个在查询模块需要解决的主要问题:1.查询方式一般查询方式分为精确查询、模糊查询和范围查询,我们在设计基表查询列信息数据表时,查询条件列标志这样一个字段来记录查询方式,用“=” 表示精确查询,“%”、“#”表示模糊查询,“一”表示范围查询,如果这个字段不作为查询条件,那么查询条件
49、列标志的值是“N。这样在 App Common Bean 中对这部分的处理方式就是判断查询条件列标志的值,并根据不同的值生成不同的sql 语句;2.字段的显示方式在查询条件界面的设定中,用户常常要求对一些能选择的的条件,用下拉框的形式选择,而不是自己输入。基表查询列信息数据表的列类型、查找表主列、查找表名、查找表结果列这几个字段就是为了解决这个问题设定的,这个问题直接在页面中就可以处理;3.字段类型字段类型分为字符型、数值型和日期型,分别对应的标记是VARCHAR2, NUMBER, DATE。根据这些信息,生成相应的查询页面 quirecon jsp。当然还需要处理模块Quirecon di
50、spose jsp 来处理 quirecon jsp 页面的表单元素,这个查询模块主要是为下面的浏览模块提供一个 where 子句参数。在 quirecon.jsp 页面中,主要的代码如下:/获取 App Common Bean, 并将数据处理放到 App CommonBean 中,在 quirecon j sp 中只处理页面显示;String qId I=”;qIdI=chagngcode.codeString(request.get Parameter(module-para);/获得查询标识;quire.SetQId(qId);quire.SetQpType(Z 1”);quire.Se
51、tMoudle Type (module_type);quire.SetSession(session);quire .set Center Code(q-center Code);quire. Set Department Code(q-department Code); quirP. set Use rId(q_userld);quire. set Operation Level(q-operation Level);String Buffer b=quire .print Page( ); Ii 调用 App Common Bean 的画图函数,画出 通用的显示页面;session. r
52、emov; ,Attribute(date Type); session. Remove Attribute(precision);以下是将传递参数给浏览模块session. removeAttribute(method); session. removeAttribute(fildName);session. removeAttribute(formElementName); session .removeAttribute(fieldDesc); session. setAttribute(dateType,dateType); session .setAttribute(precisio
53、n,precision); session. setAttribute(method,method); session. set Attribute(fildName;fildName);session. set Attribute(form Element Name,form Element Name); session. set Attribute(columnType,column Type);session.set Attribute(fieldDesc,field Desc);4.4.2 浏览模块的设计与实现浏览模块的实现过程是根据查询模块的的传递参数查找基本查询列信息数据表,并根据
54、这个元数据表的参数得到对应的基表的字段,最后调用浏览页面inquirePage3.jsp 生成页面显示。同时还要提供增加、修改、删除、详细浏览模块的入口参数。浏览模块中要处理的主要问题就是判断基表查询列信息数据表中的浏览标志这个字段,如果是“Y;,则在浏览界面中显示该字段,否则不显示。在 inquirePage3 jsp 页面中,设计步骤及主要的代码如下:;从上一页面获得参数;class=buptdes.business.AppCommon利用这些读取基表查询列信息数据表中的相关参数;String temp FlagA=(String)request.get Parameter(tempFlag1”);从上一页面获得参数;利用这些读取基表查询列信息数据表中的相关参数;String temp FlagA=(String)request. Get Parameter(tempFlag1”); 读取对应的基表或视图中的数据; inquirePage.setReturnNum(tempInt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 螃蟹收购协议合同
- 免责协议合同
- 美发合作合同协议
- 中间商返款协议合同模板
- 景区观光车承包合同协议
- 特产购销合同协议
- 木门售后协议合同
- 楼顶拆装安全合同协议书
- 图文价格协议合同
- 怎么取消合同协议
- 工程造价司法鉴定与纠纷调解典型案例-记录
- 2025年春季学期初中历史中考复习计划
- 第1课时 数与运算(说课稿)-2024-2025学年一年级上册数学人教版
- 内蒙古地区历年中考语文现代文之记叙文阅读63篇(截至2024年)
- 2023年4月信息素养系列培训讲座
- 挖掘机司机岗位安全培训课件
- 2024年中国浴室套件市场调查研究报告
- 电炉炼钢工职业技能知识考试题(附答案)
- 依法治县业务培训
- 网络安全课件:防范钓鱼攻击与社工库检测分析
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)宣传海报
评论
0/150
提交评论