支持运行时模型扩展的对象关系映射系统和方法技术方案

技术编号:4253359 阅读:259 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种支持运行时模型扩展的对象关系映射系统和方法。该系统包括:关系数据存储子系统,用于以关系数据的格式存取对象;元组存储子系统,用于以多元组的格式存取对象;和分派器/组装器,用于根据对象的模型信息,分别向关系数据存储子系统和元组存储子系统存取对象的原始部分和扩展部分。这样就可以在对象关系映射系统中支持运行时模型扩展,而不必在升级时关闭系统或者在关系数据库中修改模式并迁移数据。

【技术实现步骤摘要】

本专利技术涉及对象关系映射(ORM)系统,具体地说,涉及支持 运行时模型扩展的对象关系映射系统和方法。
技术介绍
随着面向对象的程序设计变为企业软件开发的范例,对象关系映 射(ORM)已成为一种越来越受欢迎的实现对象持久性的技术。在 面向对象的(OO)的程序设计中,数据管理任务一般是通过操纵对 象来实现的。然而,关系数据库例如DB2、 Oracle只能存储和操纵关 系数据,这些关系数据被组织在表中。因此,为了将对象保存到数据 库中,程序员必须手动设计对象的关系数据库模式(schema)并把对象 转换成关系记录。对于比较小的对象模型而言,这可能比较容易。但 是在应用大规模对象模型的情况下,需要使用的对象模型越来越多, 为对象模型手工设计数据库会变得困难。对象关系映射(ORM)被用于将面向对象的程序设计模型映射到 由Oracle、 DB2、 Sybase和其它关系数据库管理器(RDBMS )管理 的关系数据库模型。从程序员的角度看,ORM系统应当看起来象一 个永久的对象存储库。程序员只需生成对象并将它们传送到ORM系 统。ORM系统自动地将这些对象保存到关系数据库中。目前有很多 流行的ORM产品,例如Websphere Metadata Server (XMeta)、 Apache OJB、 Hibernate、 Oracle's TopLink等。下面参考图1介绍ORM系统的基本组成和工作原理。图1示出了现有技术的ORM系统10的结构框图,它包括模型 注册模块ll、对象关系(OR)映射模块12和关系数据库(RDB)13。 在ORM系统10以外还有代码生成器17和应用程序18。代码生成器n用于识別面向对象的模型中的类和属性,根据识别结果生成应用程序接口 (API)并将生成的API传递给应用程序18。应用程序18利 用从代码生成器17传递来的API生成对象。关于代码生成器17和应 用程序18的操作是本领域的技术人员公知的,这里不再详细描述。为了使用ORM系统10,用户需要将面向对象的模型注册到 ORM系统10。该系统10利用对象关系映射才莫块12产生适于已注册 的模型的关系数据库模式。然后,应用程序18可以将符合已注册模 型的对象串行送入ORM系统10。对象关系映射模块12把这些对象 自动翻译成SQL (结构化查询语言)语句。通过使用ORM系统IO, 程序员可以以面向对象的方式将注意力集中于商业逻辑,而不需要花 费时间手动处理对象进行关系数据库翻译,这将大大减轻程序员的工 作负担。下面举例说明应用ORM系统的典型步骤。(1)由设计人员根据所需的商业逻辑设计适于具体应用的面向 对象的模型,例如在一个机票预订系统中,可以声明一个类 TicketOrder,它包含例如三个属性时间Time、客户姓名 Name、航班号Flight,当然在实际中可以包含更多的属性,例如 价格、航空公司名称、退票/改签等等,这里只是举例说明。当然,如 果模型已经存在,则可以跳过这个步骤。(2)将步骤(l)中的数据模型分别输入到代码生成器17和 ORM系统10中的模型注册模块11,在模型注册模块11中注册该数 据模型并将其输入到对象关系映射模块12。对象关系映射模块12根 据数据模型产生关系数据库模式,这里的关系数据库模式例如是指在 关系数据库13中的表的结构。另一方面,如上所述,代码生成器17 根据面向对象的模型生成相应的API。(3) 对象关系映射模块12在步骤(2)中产生的关系数据库模式被 部署到关系数据库13中。(4) 应用程序18利用生成的API产生数据对象,对象关系映射 模块12使用SQL语言将该数据对象保存/加载到关系数据库13中。 在上述例子中,每次有一个客户提出机票预订请求,应用程序18就生成一个数据对象,它含有与Time、 Name、 Flight,,相对应的三 个属性值。这个数据对象被保存到关系数据库13中,成为表的一个 条目。以上例子可以参考下面的表,在该表中还附加了一个ID,,列, 这可以在生成关系数据库模式时由对象关系映射模块12自动加入。 当然,这一列也可以不存在。<table>table see original document page 7</column></row><table>与传统的关系数据库相比,ORM系统具有很多优势。然而,在 应用ORM系统时也有一些限制。大多数ORM系统方案使用水平存 储模式,例如,在关系数据库中每个类具有一个相关的表,类的每个 属性在该表中都具有一个相关的列,而类的每个实例(一个对象)对 应于表的一行记录。当模型不变时这没有任何问题。但是,数据模型 确实会发生改变,特别在SOA(面向业务的体系结构)环境中更是如 此。例如,当税收条例修改时,航空公司需要向机票预订表中附加一 个燃油附加税项。在这样的情况下,用于售票系统的数据模型只需 要向TicketOrder,,类附加一个FuelCompTax,,属性。但是,为了适 应这个微小的改变,用户需要(l)《吏ORM系统停止运行;(2)重新注 册新的模型,生成新的关系数据库模式,并将关系数据库13中适于 旧模型的数据迁移到新的模型下;3)适于旧的API版本的应用程序 18也需要升级到新的API。可见,目前的ORM系统不支持运行时的模型扩展,因为一旦模 型被注册,关系数据库模式就被产生并被部署到关系数据库。为了升级ORM系统,即使是很小的变化,也需要使系统停止运行,注册新 的模型并迁移数据,还要产生新的API并升级应用程序,这在时间和 费用上都很不经济,还会影响商业系统的正常运行,有时这是不能容 忍的。现在需要一种在模型改变时不必使系统停止运行,而是支持在 运行时对部署在ORM系统中的模型进行动态扩展的系统和方法。
技术实现思路
为了解决以上问题,本申请提出 一种通过添加元组存储子系统而 支持ORM系统的运行时扩展的系统和方法。这里的元组存储子系统 是指将数据划分成格式统一的多元组后进行存储管理的系统。为了在运行时扩展已经部署的模型,用户需要注册模型的扩展部 分。当需要保存的数据到来时,系统会自动地将与模型的扩展部分有 关的数据转换成多元组并保存到元组存储子系统中。与模型的扩展部 分无关的数据仍按已部署的模型被保存到关系数据库中。通过这种方 式,本专利技术就可以支持对已部署的模型的动态扩展,而不改变部署到 关系数据库的关系数据库模式,也不用迁移关系数据库中的数据。根据本专利技术的一个方面,提供了 一种支持运行时模型扩展的对象 关系映射系统,包括用于以关系数据的格式存取对象的关系数据存储 子系统,其特征在于该系统还包括元组存储子系统,用于以多元组 的格式存取对象;和分派器/组装器,用于根据对象的模型信息,分别 对关系数据存储子系统和元组存储子系统进行对象的存取。在本专利技术的上述系统中,还可以包括模型注册模块,用于注册对 象的模型信息,以及响应于分派器/组装器的请求将注册的模型信息提 供给分派器/组装器。其中,对象的模型包括原始模型和至少一个在原 始模型扩展后形成的扩展模型。符合扩展模型的对象包括两个不同的 组成部分与原始模型有关的数据以及与扩展部分有关的数据。在上述系统中,关系数据存储子本文档来自技高网
...

【技术保护点】
一种支持运行时模型扩展的对象关系映射系统,包括用于以关系数据的格式存取对象的关系数据存储子系统,其特征在于该系统还包括: 元组存储子系统,用于以多元组的格式存取对象;和 分派器/组装器,用于根据对象的模型信息,分别对所述关系数据 存储子系统和所述元组存储子系统进行对象的存取。

【技术特征摘要】
1. 一种支持运行时模型扩展的对象关系映射系统,包括用于以关系数据的格式存取对象的关系数据存储子系统,其特征在于该系统还包括元组存储子系统,用于以多元组的格式存取对象;和分派器/组装器,用于根据对象的模型信息,分别对所述关系数据存储子系统和所述元组存储子系统进行对象的存取。2. 根据权利要求1所述的系统,还包括模型注册模块,用于注 册对象的模型信息,以及响应于所述分派器/组装器的请求将注册的模 型信息提供给所述分派器/组装器。3. 根据权利要求1所述的系统,其中,所述关系数据存储子系 统包括关系数据库,用于存储对象;和对象关系映射模块,耦合在所述分派器/组装器和所述关系数据 库之间,用于对所述关系数据库进行对象的存取。4. 根据权利要求1所述的系统,其中,所述元组存储子系统包括多元组存储库,用于存储多元组格式的数据;和 对象-多元组翻译器,耦合在所述分派器/组装器和所述多元组存 储库之间,用于将对象的组成数据翻译成多元组格式的数据并保存到 所述多元组存储库中,或者从所述多元组存储库中取出多元组格式的 数据并翻译成对象的组成数据。5. 根据权利要求2所述的系统,其特征在于所述分派器/组装器包括识别装置,用于识别要存取的对象符合原始模型还是在该原始模 型扩展后形成的扩展模型,根据识别结果向所述模型注册模块请求相 应的模型信息,以及根据从所述模型注册模块获得的模型信息在符合 扩展模型的对象中区分与原始模型有关的数据以及与扩展部分有关的数据;分派装置,用于在保存数据时,将与原始模型有关的数据和与扩 展部分有关的数据分别分派给所述关系数据存储子系统和所述元组 存储子系统进行保存;和组装装置,用于在取出数据时,将分别从所述关系数据存储子系 统和所述元组存储子系统取回的与原始模型有关的数据和与扩展部 分有关的数据组装成符合所需模型的对象。6. 根据权利要求5所述的系统,其特征在于,所述分派器/组装器与位于该系统外部的应用程序相关联,所述应用程序请求所述分派 器/组装器存取符合不同模型的对象。7. 根据权利要求6所述的系统,其特征在于,由位于该系统外 部的代码生成器根据不同的对象...

【专利技术属性】
技术研发人员:杨洋谢国彤王晨刘升平曹锋
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1