(计算机应用技术专业论文)用于关系数据库的sdo数据访问组件.pdf_第1页
(计算机应用技术专业论文)用于关系数据库的sdo数据访问组件.pdf_第2页
(计算机应用技术专业论文)用于关系数据库的sdo数据访问组件.pdf_第3页
(计算机应用技术专业论文)用于关系数据库的sdo数据访问组件.pdf_第4页
(计算机应用技术专业论文)用于关系数据库的sdo数据访问组件.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(计算机应用技术专业论文)用于关系数据库的sdo数据访问组件.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 业务数据是企业中各种业务应用的基础,如何快速、有效地获取数据,是企 业应用开发和集成的关键性问题。在传统的基于中间件的数据集成方案中,通常 以x m l 作为全局数据模型,由于与上层应用所使用的对象模型存在“阻抗失配” 的问题,大量的精力花费在处理x m l 数据与对象之间的序列化和反序列化上。 本文基于研究服务数据对象( s e r v i c ed a t ao b j e c t ,s d o ) 模型给出一种数 据集成方案,并完成了关系数据源包装器,亦即r d bd a s 数据访问组件的设计与 实现工作。r d bd a s 组件实现了数据库关系模型与集成平台s d o 对象模型的双向 映射,它将数据库返回的记录集转化为数据对象图,并把用户对数据对象图的修 改持久化到数据库。通过在运行期由数据库关系模式动态生成与之对应的数据对 象类型,简化了应用开发。同时提供的编译期静态数据类型支持可以获得更好的 性能和安全性。此外,提供了可插接的缓存策略,通过减少对数据库的访问提升 性能。对于在多用户环境下所产生的并发问题,应用乐观并发控制机制,使之具 备良好的可伸缩性。 r d bd a s 组件简化了s d o 编程模型中对于关系数据源的访问,不仅是基于s d o 的数据集成平台的重要组成部分,而且为使用s d o 的s o a 应用的开发提供了有力 的工具。 关键词:数据集成服务数据对象s d o 数据访问组件d a s 关系数据库 a b s t r a c t e n t e r p r i s ea p p l i c a t i o n sa r eb u i l to nb u s i n e s sd a t a h o wt oa c c e s sb u s i n e s sd a t a e f f i c i e n t l ya n de f f e c t i v e l yi st h ek e yi s s u eo fe n t e r p r i s ea p p l i c a t i o nd e v e l o p m e n ta n d i n t e g r a t i o n t r a d i t i o n a ld a t ai n t e g r a t i o ns o l u t i o nb a s e do nm i d d l e w a r eo f t e nu s e s x m la sg l o b a ld a t am o d e l 。b u tt h e r ei sam i s f i a a t c hb e t w e e nt h eo b j e c tm o d e li no o w o r l da n dx m l s c h e m a ,t h u sm u c ht i m ei ss p e n to nm a r s h a l l i n ga n du n m a r s h a l l i n g x m ld a t a t os o l v et h i sp r o b l e m , b a s e do nt h er e s e a r c ho nt h ep r o g r a m m i n gm o d e lo f s e r v i c ed a t ao b j e c tt e c h n o l o g y ( s d o ) ,t h i sp a p e rp r e s e n t sas o l u t i o nt h a tu s es d oa s g l o b a ld a t am o d e l ,a n dd e s c r i b e st h ed e s i g na n di m p l e m e n t a t i o no ft h ed a t as o u r c e w r a p p e rf o rr e l a t i o n a ld a t a b a s e ,w h i c hi sac o m p o n e n to f t h ed a t ai n t e g r a t i o np l a t f o r m a n dc a na l s ob er e c o g n i z e da st h ed a t aa c c e s ss e r v i c ec o m p o n e n tf o rr e l a t i o n a l d a t a b a s e ( r d bd a s ) r d bd a sp e r f o r m sb i d i r e c t i o nd a t am a p p i n gb e t w e e n d a t a b a s er e l a t i o nm o d e la n ds d oo b j e c tm o d e l i te x e c u t e ss q lq u e r i e s ,r e t u r n s r e s u l t sa sag r a p ho fd a t a o b j e c t sa n dr e f l e c t sc h a n g e sm a d et oag r a p ho fd a t a o b j e c t s b a c kt ot h ed a t a b a s e i ts u p p o r t sb o t hd y n a m i ca n ds t a t i cd a t at y p e s g e n e r a t i n gs d o d a t at y p e sd y n a m i c a l l ya c c o r d i n gt od a t a b a s es c h e m aa tr u n t i m eo b v i a t e st h en e e dt o d e f m ed a t at r a n s f e ro b j e c td u r i n gd e v e l o p m e n tt i m e c o m p i l i n gt i m es t a t i cd a t at y p e s u p p o r tp r o v i d e sb e t t e rp e r f o r m a n c ea n ds e c u r i t y t h ec a c h es t r a t e g yp l u g - i ns u p p o r t r e d u c e sd a t a b a s ea c c e s st o i m p r o v ep e r f o r m a n c e c o n s i d e r i n gt h ec o n c u r r e n c y p r o b l e mi nam u l t i u s e re n v i r o n m e n t ,r d bd a su t i l i z e st h eo p t i m i s t i cc o n c u r r e n c y c o n t r o lm e c h a n i s mt op r o v i d eb e a e rs c a l a b i l i t y i ns u m m a r y , r d bd a ss i m p l i f i e st h ea c c e s st or e l a t i o n a ld a t a b a s ei ns d o p r o g r a m m i n gm o d e l i ti sn o to n l ya ni m p o r t a n tc o m p o n e n to ft h ed a t ai n t e g r a t i o n p l a t f o r mb a s e do ns d o ,b u ta l s op r o v i d e sap o w e r f u lt o o lf o rs o aa p p l i c a t i o n d e v e l o p m e n tw h i c hu s es d o f o rd a t ar e p r e s e n t a t i o n k e yw o r d s d a t a i n t e g r a t i o n ,s e r v i c ed a t ao b j e c t ,s d o ,d a t aa c c e s ss e r v i c e c o m p o n e n t ,d a s ,r e l a t i o n a ld a t a b a s e 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得苤鲞盘堂或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:印彤 签字日期:口。7 年占月f 日 学位论文版权使用授权书 本学位论文作者完全了解苤叠盘堂有关保留、使用学位论文的规定。 特授权墨鲞盘堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:聊群 导师签名: 签字日期:功口7 年占月心目 签字隰叩年石月f 目 天津大学硕士学位论文第一章绪论 1 1 课题的背景和意义 第一章绪论 随着企业信息化建设的不断深入,企业在发展过程中根据特定的需要构建了 许多特定功能的应用系统。由于这些系统是在不同阶段开发的,有着各自的运行 环境和数据存储方式,各个系统彼此封闭,数据格式不统一,信息难以交换和共 享,形成了所谓的“信息孤岛”。企业应用构建于业务数据之上,如何有效地存 储数据,快速及时地获取数据,为上层应用提供便利的数据访问,是企业应用开 发和应用集成的关键性问题。 数据集成是把不同来源和不同格式的数据在逻辑上或物理上有机地集中,提 供一个访问异构数据源的统一接口,使用户不必考虑数据源数据模型的异构性、 数据抽取、数据合成等问题,用户只需指定他们需要的数据,而不必描述怎样去 获取数据,从而为企业提供全面的数据共掣1 1 。 在企业数据集成领域,已经存在许多成熟的方法和框架。目前通常采用联邦 数据库、基于中间件和数据仓库等方法来构建集成系统 2 】【3 1 。其中利用中间件技 术集成各种异构数据时,不需要改变原始数据的存储和管理方式,可集中为异构 数据源提供一个统一的高层检索服务,是实现异构数据集成的理想解决方案。 基于中间件的数据集成是一种典型的模式集成方法,它通过统一的全局数据 模型来访问异构的数据库、w e b 资源、遗留系统等【2 】。g w i e d e r h o l d 最早给出 了基于中间件的数据集成的构架【4 】。如图1 - 1 所示,中间件位于数据源和上层应 用之间,向下协调对各异构数据源的访问,向上为访问数据的应用程序提供一个 统一的数据模型和数据访问的通用接口。它主要包括中介器和包装器两部分,其 中每个数据源对应一个包装器,中介器通过包装器与各数据源交互。用户在全局 数据模型的基础上向中介器发出查询请求。中介器处理用户请求,将其转换成各 包装器能够处理的子查询请求,发送给包装器。包装器对特定的数据源进行了封 装,并与其交互,执行子查询请求,将结果数据模型转换为系统所采用的全局数 据模型返回给中介器,从而提供了一致的访问机制。 天津大学硕士学位论文第一章绪论 图1 - 1 基于中间件的数据集成的体系结构3 】 异构数据访问中间件必须提供一种全局数据模型来统一异构的源数据模型, 它需要满足如下要求: 能够描述各种数据格式,无论其是结构化还是半结构化。 易于发布和数据交换,集成后的数据可以方便地以多种格式发布且便于 与其它应用程序交换数据。 基于x m l 的数据交换是最初的中立数据模型。作为i n t e r n e t 上标准的数据 交换格式,x m l 有着广泛的应用并受到众多工具的支持。由于其强大的语义表 现力、自描述能力、结构化特征、可扩展性以及平台无关性,很多数据集成系统 都使用x m l 作为全局数据模型【5 】【6 】【7 】【8 1 。 然而,上层应用通常是使用面向对象方法构建,在使用基于x m l 的数据时, 程序员需要掌握处理x m l 的相关a p i 和解析技术,例如s a x ( s i m p l ea p if o r x m l ) 、d o m ( d o c u m e n to b j e c tm o d e l ) 、s t a x ( s t r e a m i n ga p if o rx m l ) 等。这些 技术过于底层且不易使用,很多精力花费在处理x m l 数据与对象之间的序列化 ( m a r s h a l l ) 与反序列化( u n m a r s h a u ) 上,而不是具体的业务逻辑。因此,需要一种 比x m l 更有语义,与普通数据传输对象( d a t at r a n s f e ro b j e c t , d t o ) t 9 】结合更紧 密,使用更方便的数据载体,以提供更好的数据交互能力。 服务数据对象( s e r v i c ed a t ao b j e c t ,s d o ) t l o 】满足了上述的要求。简单的讲, 它是一种数据编程架构和a p i ,目的在于简化和统一不同数据源类型的数据编 程。它为常用的应用模式提供了强有力的支持,并使得应用程序、相关工具和框 架可以更容易地查询、观察、绑定、更新和内省( i n 仃o s p e c t ) 数据【1 l 】。它包含如下 天津大学硕士学位论文第一章绪论 特性( 详细内容将在第二章介绍) : 统一、语言中立的a p i 动静态数据访问方式相结合 元数据支持 变更历史 。 离线数据集 支持和集成x m l 由于其对断开连接的编程模型和异构数据源访问的支持,s d o 对于数据表 示的灵活性以及鲁棒性已经在许多商业产品中得到了证明,例如:b e a a q u a l o g i cd a t as e r v i c e s p l a t f o r m t l 2 j ,i b mw e b s p h e r ea p p l i c a t i o ns e r v e rv 6 1 f e a t u r ep a c kf o rs o a t l3 1 ,s a pn e t w e a v e ra p p l i c a t i o ns e r v e rj a v a ( t m ) e e5 e d i t i o n 1 4 1 ,r o g u ew a v es o f t w a r eh y d r a s d o 1 5 】等。 核心s d o 规范定义了适用于各种类型数据源的基本a p i ,但没有指定某一 种特定的查询语言和后端存储。目前最广泛运用的后端存储是关系数据库,然而 数据库的关系模型与s d o 对象模型有很大的不同,即所谓的“对象关系的阻抗 失配”1 1 6 1 1 ”】。将关系模型中表结构的记录映射成s d o 对象模型中的数据对象图 的这一过程是复杂的,并且此过程的逆过程( 将用户对数据对象图的修改反映到 数据库中,这需要生成一系列的s q li n s e r t ,u p d a t e ,d e l e t e 语句) 更为 复杂。因此,很有必要开发一种数据访问组件,对上层应用屏蔽此过程的复杂细 节,使应用开发人员专注于具体的业务逻辑。 1 2 本文的主要工作 本文在分析现有的基于中间件的数据集成方案的基础上,结合s d o 编程模 型,给出一种以s d o 作为全局数据模型的解决方案。在此基础上,完成了用于 关系数据库的数据源包装器,亦即s d o 编程模型中的数据访问组件( d a t a a c c e s s s e r v i c e ,d a s ) 1 1 1 的设计与实现工作。r d bd a s 组件实现了数据源关系模型与集 成平台统一的全局数据模型之间的相互转化。具体工作包含如下几个部分: 用户接口设计 对象关系映射 事务管理 并发控制 查询缓存 分级日志 天津大学硕士学位论文 第一章绪论 功能测试 1 3 全文安排 论文的各章节安排如下: 第一章介绍数据集成的应用背景,分析了现有的解决方案,提出以s d o 为 全局数据模型的数据集成方案,并简述了自己的主要工作。 第二章简要地介绍了s d o 规范及其编程模型,分析其作为全局数据模型的 优势。 第三章总体上描述了r d bd a s 组件的设计,用户接口a p i ,功能模块划分。 详细阐述了对于对象关系映射,并发控制,事务管理,查询缓存,分级日志以 及功能测试的具体实现机制。 第四章对目前所做的工作进行了总结并指出今后的研究方向。 天津大学硕士学位论文第二章服务数据对象概述 第二章服务数据对象概述 服务数据对象( s e r v i c ed a t ao b j e c t ,s d o ) 源于2 0 0 3 年由i b m 与b e a 共同制 定的联合规范c o m m o n j 1 8 1 9 】,同年通过j s r ( j a v as p e c i f i c a t i o nr e q u e s t ) 2 3 5 得到 了j a v a 社区的认可,并在今年四月提交o a s i s ( o r g a n i z a t i o nf o rt h e a d v a n c e m e n t o fs t r u c t u r e di n f o r m a t i o ns t a n d a r d s ,结构化信息标准促进组织) 进行标准化工作, 目前已经纳入s o a 规范【2 1 1 。作为构建s o a 应用的一项核心技术,s d o 用于 s c a ( s e r v i c ec o m p o n e n t a r c h i t e c t u r e ) 2 0 】框架中服务数据的表示和传递。 2 1 背景 虽然j a v a 平台提供了大量的数据编程模型和a p i ,但这些技术是零散的, 没有总是提供相关的工具和框架,并且它们之中的一些技术很不容易使用,在功 能上也不足以满足通常应用的需要。s d o 的目的不是要替换底层的数据访问技 术,而是要建立一个统一的数据访问层( d a t aa c c e s sl a y e r ) ,并提供相关的工具 和框架,使得对异构数据源的访问更加容易。它有以下目标: 1 统一对异构数据源的访问 当前的数据编程模型大多与数据源类型相关。然而,在现实的应用中,数据 往往是来自于不同的数据源,包括关系数据库( 通过j d b c ,实体e j b ,以及其 它的持久化框架) ,w e b 服务( 通过j a x r p c i 2 2 】或其它的一些w e b 服务开发框 架) ,x m l 数据,j m s 消息、企业信息系统( 通过j c a 资源适配器或其它自定 义的a p i ) 。这种异构性使得应用开发人员不得不去学习和使用众多的数据编程 模型和a p i 。过多的数据访问a p i 也使得相关的用于自动化常用数据编程工作的 工具和框架的开发面临极大的挑战,比如将u i 组件绑定到后端数据源【2 3 1 。因此, 一个通用的用于表示数据集合而与数据源类型无关的工具可以为应用开发者提 供一个更加简单、统一的编程模型,同时也可以简化工作在不同类型的数据源之 上的工具和框架的开发。 2 对静态和动态数据访问a p i 提供统一的支持 静态的( 强类型的) 接口为应用开发人员提供了易于使用的编程模型。例如 实体e j b 、j d o 2 4 、h i b e r n a t e 2 5 】等对象关系持久化工具提供了强类型的数据访 问接口( 如a c c o u n t g e t f i r s t n a m e ( ) 或a c c o u n t g e t b a l a n c e 0 ) 。相似地,j a x b l 2 6 】 天津大学硕士学位论文第二章服务数据对象概述 提供了从x m ls c h e m a 生成j a v a 接口的机制,使得对x m l 的数据编程相对于直 接使用d o m 和s a x 更容易。另一方面,j d b c 规范里的r e s u l t s e t 和r o w s e t 接口只提供了动态的( 弱类型的) 数据a p i ( 如r s g e t s t r i n g ( “f i r s tn 伽”) 或 r s g e t f l o a t ( “b a l a n c e ”) ) 。 同时使用这两种编程模型,既可以保证编程的简单性,而且不会失去工具与 框架程序所需要的动态编程的特性。因此,一个统一的数据编程技术需要对静态 和动态数据a p i 提供无缝的支持。 3 对工具和框架的支持 支持跨数据源类型的工具和框架需要满足以下要求: 统一对异构数据源的访问。现实生活中的应用经常需要从不同数据源获 取数据,框架需要依靠一个统一的数据表示。 动态数据a p i 。框架所使用的数据与具体应用相比更具一般性,基于代 码生成的接口通常不够灵活,使用动态数据a p i 更为合适。 简单的内省( i n t r o s p e c 0 a p i 。框架经常需要内省数据的类型,用于显示数 据、更新表单、数据绑定等。 4 对断开连接的编程模型的支持 许多应用很自然地使用断开连接的数据访问模式。应用程序读取一系列的数 据,在一段时问内局部地保存,操纵数据,最后将修改后的结果保存到数据源。 乐观并发语义可以对此模式提供更好的支持。 5 基于常用的设计模式对自定义的数据访问层提供支持 许多应用都使用常用的设计模式来构建数据访问层,如:数据传输对象( d a t a t r a n s f e ro b j e c t ) ,传输对象组装器( t r a n s f e ro b j c o ta s s e m b l e r ) ,数据访问对象( d a t a a c c e s so b j e c t ) t 9 】等。当上层应用需要与物理数据源隔离时,通常要用到这些模式。 实现自定义的数据访问层通常需要大量的代码,绝大部分都是可以被自动化的, 这个自定义的数据访问层应该可以被集成到相关的工具和框架里面。 6 解除应用代码和数据访问代码之间的耦合 为了支持更好的可重用性和可维护性,应用代码应该与数据访问代码分离, 数据访问技术应该满足这种分离关注点的要求。 2 2 体系结构 s d o 基于离线数据集的概念。在该模式下,客户端从数据源检索数据图( 即 树结构或图结构的数据对象集合) ,更改数据图,然后将对数据图的更改反映到 数据源。s d o 的体系结构包含如下几个部分: 天津大学硕士学位论文第二章服务数据对象概述 1 s d o 核心 核心s d o 规范定义了访问数据的基本组件,包括表示数据的数据对象 ( d a t a o b j e c t ) 和表示数据对象集合的数据 ( d a t a g r a p h ) 。此外,s d o 规范还提供 了元数据a p i ,允许客户端自省( i n t r o s p e c t ) 数据模型,并使得相关的工具和框架 能够以统一的方式处理不同的数据源。s d o 核心接口的类图如图2 - 1 所示: 图2 1s d o 核心接口的类图【l l 】 d a t a o b j e c t :数据的载体,提供了访问其属性的a p i 。 t y p e :d a t a o b j e c t 的元信息。类似于j a v a 鹏j ( r e f l e c t i o n ) 2 s c l a s s 和 o b j e c t 的关系。 p r o p e r t y :t y p e 中属性的元信息。类似于j a v a 反射( r e n e c t i o n ) 【2 8 1 中c l a s s 和f i e l d 的关系。 s e q u e n c e :d a t a o b j e c t 中属性- 值对( p r o p e r t y - v a l u e ) 的序列。 d a t a g r a p h :由d a t a o b j e c t 组成的集合,是持久化以及与其他服务交互 的单位。 c h a n g e s u m m a r y :d a t a g r a p h 中数据的更改摘要。 d a t a a c c e s s s e r v i c e :为数据对象提供持久化服务,目前还没有纳入s d o 规范。 数据对象( d a t a o b j e c t ) 数据对象将数据保存为一组属性,这些属性包括基本数据类型的值以及指向 其他数据对象的引用。对于x m l 数据来说,数据对象通常可以表示一个元素的 内容或属性、简单类型子元素的值以及指向表示复杂类型子元素的数据对象的引 用。对于关系数据而言,数据对象通常表示数据库表中的一条记录,表之间的外 键关联会通过指向另一个数据对象的引用来表示,对应于另一个表中的一条记 录。 天津大学硕士学位论文第二章服务数据对象概述 数据对象提供了动态数据a p i 来读取和设置属性的值,它使用x p a t h 2 9 】表达 式在数据图中定位数据对象。动态数据a p i 很重要是因为代码生成并不是适合于 所有的场景,在很多情况下,运行时框架需要内省元数据并使用动态数据a p i 。 也可以从模式( 例如x m ls c h e m a 定义、e m o f 模型等) 生成数据对象的静态 j a v a 接口,这提供了诸如编译期类型检查、代码自动完成等开发时的易用性。核 心s d o 规范没有定义代码生成机制,可以利用现有的从x m ls c h e m a 定义生成 j a v a 接口的解决方案( 例如j a x b 2 6 1 、x m l b e a n s t 3 0 1 等) ,并将其与s d o 集成。 s d o 规范对数据对象之问的关联提供了丰富的支持,包括1 :1 、l :n 和n m 关联。数据对象之间的关联以及逆向关联由数据对象自身负责管理。包含 ( c o n t a i n m e n t ) 关系也是受支持的,这使得数据访问组件在持久化数据对象时能够 做出正确的决策( 例如级联删除) 。 数据 虱( d a t a g r a p h ) 数据图是数据对象的集合,是组件之间或层之间数据传输的单元。它同时负 责记录更改摘要。更改摘要提供了关于添加、更新和移除了哪些数据对象的信息。 元数据( m e t a d a t a ) 在应用开发过程中,常常需要从实例数据( i n s t a n c ed a m ) , 元数据( m e t ad a t a ) 和元模型( m e t am o d e l ) 等各个层次来描述数据。最底层是数据本身或实例数据, 这类数据服从一种由元数据描述的数据模型或模式,而元数据本身服从于一种称 为元模型的模型。 以x m l 为例,x m l 实例文档是实例数据,模式( 例如x m ls c h e m ad e f i n i t i o n 或x s d ) 是元数据,模式语言( 例如x m ls c h e m a ) 是元模型,如图2 2 所示: 一 s d om l 脯臣j 咽_ 钿匹b n d 如 t ,珥l 帅1 。- 曲嶂9 t f - h 略:d _, m n _ - h 。 d _ 柑:c i i f :0 - b 蝴 _ _ th _ ,c _ m - p q - i 瑚州r 棚:i _ _ t h 。l l d t :a - i _ i ,p - i : c p i - tr 4 n - ( _ n t 自_ n :t t 。 砌i 竹m m - i u q ,娥_ 州_ _ t ,辱:憎 柚:- h 日, ,抽:, l i t _ p o - ,b e _ _ _ - o b ,b :t h i ,i l _ l h ,:k x t i t d 寸删t 性忡。1 r _ “t f j h t h h d f d 1 “t b u ,z ,0 ,b a 虹蝴,a 趵z * , ,l t n t z t d m t _ t b - ,c 期b 6 2 z q 一m t ,- t ,l t r d t - ”d o 憎, 图2 - 2 数据、元数据以及元模型之间的关系【l l 】 - 8 天津大学硕i 学位论立第一章服务数据对象概述 s d o 规范提供的元数据a p i 使用的元模型并不像x m ls c h e m a 或e m o f 那 样包含众多的内容,而只是提供了供麻用程序和框架进行常见内省仃务所需要的 元数据的基本客厂1 端视图包括数据的类型、关系以及约束。 2s d o 数据卉问服务( d a t a a c c e s ss e r v i c e ,d a s l 组件 数据琦问服务组件负责与数据源交h ,它从后端数据源获取数据刨建数掘 图,还可以基于用户对数据图所做的更改而更新数据源,如图2 - 3 所不: 、影“一 f p 1 i 二习 l 一r 1 * i 厶 ! = t 图2 - 3d a s 的角包 厶 3s d o 支持t 其 s d o 的支持工儿包括代码, ,成器、7 c 模型转换器、模式转换器、数据建模 工具、模式建模t 具菩。 4s d o 运 j 叫和框架 运彳j = 叫和框架使用s d o 中的各利- 组件执行各种 t 务,比如【s d o 数据剑u l 组件的绑定1 ”i 。s d o 架构是使得运行时和框架具有这些能力的关键因素。 2 3 应用场景 1 虚拟数据防问 s d o 可以刚于统。来自干多个芹构数据源的虚拟数据访问如到2 - 4 所小。 一个“虚拟数据访问服务”呵以支持f 富的查询语言,比如用于关系数据的s o l 以段用于x m l 数据的x q u e y 。客户端不需要了解后端异种类型的数据访问的 复杂性,就可以观暂f 、内省、更新来自虚拟数据访问服务的数据圜。然后将其发 送回原始数据源。这在数据供给功能与数据使用功能相分高的企业h ,境中是个 一至 天津大学硕士学位论文第二章服务数据对象概述 极为关键的要求。 图2 _ 4s d o 用于虚拟数据访问【1 1 1 2 访问关系数据库 s d o 编程模型对于关系数据源同样是适用的,它提供了离线数据集以及动 静态数据访问a p i 。关系数据访问服务可以提供基于s q l 的查询功能,底层使 用j d b c 来实现查询和更新。s d o 还可以与对象关系持久化机制相集成,包括 实体e j b 、j d o 和h i b e m a t e 等。如图2 5 所示: r e l a t i o n a l is d od a t a g r a p h 。 d a 纽 j d b c h 一 l c f i e n t i r d b m s a c c e s s s e r v i c e 图2 - 5s d o 用于关系数据库 3 访问x m l 数据 s d o 内建了对x m l 的支持,可以很方便地实现s d o 与x m l 数据的序列 化和反序列化。x m l 数据源可以是x m l 文件、本地x m l 数据存储区或者是具 有x m l 功能的关系数据库。x m i ,数据访问组件提供了比直接使用x q u e r y a p i t 3 0 】 更高级的抽象,如图2 - 6 所示: 天津大学硕士学位论文第二章服务数据对象概述 1 , 一 1 :天t , u e r y 。 二:a t , u e r y x m l x m l 4 :s d od a t a g r a o h d a t a 3 :x m l d o c c l i e n t d a t a 5 :s d od a t a g r a o h 。 a c c 姻s 6 :u p d a t e 。 s o u r c e s e r v i c e 图2 - 6s d o 用于x m l 数据【1 l 】 2 4 与其它数据访问技术的关系 s d o 可以与其它数据编程技术无缝集成。表2 1 给出了s d o 与其它数据编 程技术的比较: 表2 1s d o 与其它数据编程技术的关系 m o d e l a p id a t as o u r c em e t a d a t a q u e r y a p i l a n g u a g e j d b cr o w s e tc o n n e c t e d d y n a m i cr e l a t i o n a l r e l a t i o n a l s q l j d b cd i s c o n n e c t e d d y n a m i c r e l a t i o n a lr e l a t i o n a l s q l c a c h e d r o w s e t j p a , e n t i t y c o n n e c t e ds t a t i cr e l a t i o n a lj a v ae j b q l e j b i n t r o s p e c t i o n j d oc o n n e c t e ds t a t i c r e l a t i o n a l , j a v a j d o q l o b j e c t i n t r o s p e c t i o n j c ad i s c o n n e c t e dd y n a m i cr e c o r d - b a s e du n d e f i n e du n d e f i n e d d o m s a xn 久 d y n a m i cx m l x m li n f o s e tx p a t h , x q u e r y j 八x b n as t a t i cx m lj a v a n a i n t r o s p e c t i o n j a x r p cn as t a t i cx m lj a v an a i n t r o s p e c t i o n s d od i s c o n n e c t e db o t l l a n y s d o a n y m e t a d a t a a p i , j a v a i n t r o s p e c t i o n 天津大学硕士学位论文第二章服务数据对象概述 j d b c 与j s r l l 4 j d b c 为关系数据源提供了一个支持动态数据a p i 的面向连接的编程模型。 j s r l l 4 2 7 1 是对j i ) b c 的扩展,提供了s d o 所支持的一些特性,比如表示表连接 数据的j o i n r o w s e t 和提供离线数据集的c a c h e d r o w s e t 。但是它们之问有两个重 要的区别: j d b c 只是针对关系数据源的访问,而s d o 可以用于任意类型的数据源。 d b c 只提供了一个动态数据a p i ,而s d o 自然地支持静态和动态数据 a p i 。 实体e j b s d o 可以通过实体e j b 数据访问服务组件与实体e j b 一起使用,该架构正 是常用的数据传输对象和传输对象组装器设计模式的一个体现。在通常情况下, 将s d o 与关系数据访问服务结合使用就可以避免使用实体e j b 。但是,实体e j b 提供的面向连接的事务模型对于某些应用来说可能更适合。 j d o 、h i b e r n a t e 以及其它持久化框架 j d o 、h i b e r n a t e 以及其它对象关系持久化框架提供了s d o 的大量特性。例 如,j d o 和h i b e r n a t e 都提供了方便的静态数据a p i ,h i b e r n a t e 和一些j d o 实现 提供了乐观并发、断开连接的编程模型。这些持久化框架可以被扩展为支持s d o 的数据访问服务,从而融入s d o 框架中。 j a v a - x m l 绑定 j a v a x m l 绑定框架( 比如j a x r p c 、j a x b 、s a a j 、x m lb e a n s 以及e m f 3 1 】 和x s d 工到3 2 】) 支持将x m l 数据绑定到j a v a 对象,它提供了更加友好的操纵 x m l 数据的方式。j a v a x m l 绑定框架可以被扩展以便与s d o 集成,例如j a x b 可以被用作提供静态数据a p i 的工具,并被扩展以支持静态数据图和数据对象接 口。 x q u e r y 与j s r 2 2 5 x q u e r y 是即将发布的用于查询x m l 数据的标准。数据访问服务可以使用 x q u e r y 作为查询语言。j s r 2 2 5 3 哪是一个x q u e r y 标准a p i 的提案,该a p i 位于 比s d o 更低的层,将会对x m l 数据访问服务的实现大有帮助。 w e bu i 数据绑定与j s r 2 2 7 j s r 2 2 7 1 2 3 1 提出了一种声明式地将w e b 用户界面组件绑定到异构的后端数 据源的功能。例如j s f 组件可以被绑定到关系数据库中的记录或来自于w e b 服 务的x m l 数据。s d o 规范提供了实现j s r 2 2 7 的底层要素。 j c a 与j m s j c ac o m m o nc l i e n ti n t e r f a c e ( c c i ) 使用记录( r e c o r d ) 来抽象与企业资源传递 天津大学硕士学位论文第二章服务数据对象概述 的数据,这些记录通常没有特定的结构。客户端应用程序可以使用s d o 数据图 与企业资源传递数据。类似地,j m s 也具有非结构化的消息结构,s d o 数据图 可以用于在j m s 队列发送和接收数据。 综上所述,虽然s d o 源自j a v a ,但由于其强大的数据表示能力以及灵活性, 目前已经得到了许多编程语言的支持,包括c + + 和p h p ,对于c 、c o b o l 语言 支持也在o s o a 的计划当中【圳。 2 5 本章小结 介绍了s d o 的基本概念,包括相关背景、体系结构、应用场景以及与其它 数据访问技术的关系,旨在说明s d o 相对于x m l 作为全局数据模型的优越性, 为r d bd a s 组件的设计与实现奠定了基础。 天津大学硕士学位论文第三章r d bd a s 的设计与实现 3 1 体系结构 3 1 1 用例 第三章r d bd a s 组件的设计与实现 关系数据库数据访问组件r d bd a s 的体系结构服从第二章介绍的s d o 编 程模型。如图3 - 1 所示,r d bd a s 位于客户机与关系数据库之间,代理对数据 库的访问。 图3 1r d b d a s 的体系结构 图3 2 给出了一次典型的s d o 客户机通过d a s 与数据库交互的过程。 1 客户机在需要检索数据的时候使用d a s 来请求数据图。 2 d a s 负责管理对数据库的访问。首先开启读事务执行查询,然后根据数 据库返回的记录集创建数据图,最后提交事务。 3 客户机使用断开连接的方式处理数据图,即d a s 在返回数据图之后便 不再持有与数据库的连接。 4 当客户机需要保存对数据图的更改时,它将更改后的数据图发送给 d a s 。 5 d a s 负责更新数据库中的记录。它根据数据图的更改摘要生成相应的 天津大学硕士学位论文第三章r o bd a s 的设计与实现 s q l 语句,开启写事务,执行批量更新语句,提交该事务。 国国 i j l o a dd a t a g r a p h : 3 1 2 用户接口 图3 2 客户机通过r d bd a s 与数据库交互 r d bd a s 的用户接口设计遵循接口与实现分离的原则以及j a v a a p i 设计指 南1 3 3 :易学、易用、足够小。依据前一节描述的体系结构,r d bd a s 定义了如 图3 - 3 所示的用户接口( 位于o r g s h a o b i n 0 6 0 4 s d o d a s 包) 。s d o 客户机主要通过 这三个接口与数据库交互,完成如下功能: 执行数据库查询并将返回的记录集转化为数据图。 将客户机对数据图的修改持久化到数据库。 天津大学硕士学位论文第三章r d bd a s 的设计与实现 s e s s i o n + a p p l y c h a n g e s n nr o o t :d a t a o b j e e o :v o i d + c r e a t e c o m m a n d ( i ns q l ? s t r i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论