当前位置: 首页 > 专利查询>微软公司专利>正文

从关系数据库中检索对象并将其保存到关系数据库制造技术

技术编号:2827266 阅读:191 留言:0更新日期:2012-04-11 18:40
允许对象关系映射中的一致导航(对数据库和存储器环境)的系统和方法。这一般经由对持久对象(例如,实体集、实体引用…)的集合的限制来确保对象图的保真度。而且,跟踪组件可在改变发生时检测改变,并且仅经改变的对象的副本被创建以便优化操作。

【技术实现步骤摘要】
【国外来华专利技术】从关系数据库中检索对象并将其保存到关系数据库背景随着对于众多公司而言软件的战略价值的增加,软件厂商不断找出自动化软 件生产并改进质量、减少成本和推向市场的时间的新技术。这些技术包括组件技术、 可视编程、模式和框架。随着软件系统的复杂性在范围和规模上的增加,各个公司 寻求管理并解决这种复杂性的技术,这些复杂性包括重复出现的体系结构问题,诸 如物理分发、容错、复制、安全性、并发性和负载平衡。另外,因特网的发展在使 得某些通信交换大大简化的同时,加剧了这些体系结构上的挑战。具体地, 一个常见的软件体系结构表示是类图。类图表示描述系统中的符号 的静态结构的图形表示,并示出声明性(静态)模型元素,诸如类、类型及其内容 和关系的集合。类被安排成共享共同的结构和行为的分层结构,并与其他类相关联。 类图使用诸如类、封装和对象等设计元素来对类结构和内容建模,并且还显示诸如 包含、继承、关联等关系。在面向对象编程术语中,类是定义面向对象程序中的一 组对象的结构和行为的元素。在面向对象的应用程序中,类具有属性(成员变量)、 操作(成员函数)以及与其他类的关系。而且,代码生成在对象关系映射(ORM)上下文中变得流行。关系数据存储 系统(例如,DB2、 SQL Server、 MySQL等)被共同用来存储关系数据并管理相 关联的关系。期望用源级语言开发的软件能访问并操纵存储在关系数据存储系统中 的关系数据。当应用程序软件正管理关系数据时,也期望维护数据中固有的关系。 另外,对关系数据的任何改变或修改也应被存回关系数据存储系统。一般而言,面向对象的语言并不向软件开发员提供管理关系数据并确保关系 一致性的工具。例如,当使用面向对象的源代码来映射用于诸如顾客定单关系等一 对多关系的数据时,通常无需这样的特征来映射。从而,当用关系数据来填充对象 时, 一般是程序员来负责确保对象与关系数据一致。类似地,当诸如定单等对象被 移除时,程序员负责确保所有的相关关系均被更新。如果删除了一个定单,则这样 的定单必须从用于相关的顾客的定单列表中移除。另外, 一旦从数据库检索数据并将其转换成对象之后,然后数据访问层可能丢失其跟踪改变的能力,且可考虑两个分开的环境,即数据库和存储器。在数据 库环境中,采用行和列,且值提供对所需对象的访问。相反,在存储器环境中,一 般可采用指针,且一般对对象标识不执行任何值匹配或比较。在这样的环境中在数据库与存储器之间可能发生不一致性,例如在调试操作 期间或当对象被修改、删除或插入时。然后可能触发错误,拒绝将数据保存到数据 库中。而且,所发出的后续命令的顺序还可增加对象关系映射中涉及的复杂性。而且,在对象关系映射系统的操作中存在低效。例如,当程序员代码导致存 储器中对象的改变时,对象一开始被带到存储器中并在其中维护一副本。这样的副 本可被保存以用于稍后需要保存操作时进行的比较。为所有加载的对象创建这样的 副本可消耗与计算基础架构相关联的资源。概述以下提出本专利技术的简化概述以提供对其某些方面的基本理解。该概述不是本 专利技术的详尽概观。它不旨在标识本专利技术的关键/重要的元素,也不旨在描绘本专利技术 的范围。其唯一目的是以简化形式呈现本专利技术的某些概念,作为将在稍后呈现的更 详细描述的序言。本专利技术提供了允许以一致的方式(对数据库和存储器环境)导航且一般经由 对持久对象(实体集、实体引用)的集合的限制来确保对象图的保真度的对象关系 映射的系统和方法。从而,提供了一种命令性程序设计模型,其中用户为实体集采 用特定的集合类,诸如通过提供双向一致的指针, 一般可确保存储器侧中的对象图 的保真度。例如,可提供雇员部门类(实体集),使得当用户采用这样的特殊对象 且在添加了雇员时,雇员部门属性可指回这样的部门,以防止不一致性。因此,在对象的生命周期期间,可在创建(Create)、读(Read)、更新(Update)和删除 (Delete) (CRUD)操作期间维护这一构建的关系。而且,由于存储器中的对象 存在于堆中,因此可提供用于感兴趣的对象的表以提供关于基础架构的根的知识。 这样的感兴趣对象的表可减轻对递归走査(walk)相应图的要求。实体集和实体引 用的指针是双向一致的,以便正确地维护对象关系之间的保真度。对存储器中的对 象的修改然后可被推回到数据库侧。根据本专利技术的方法,对象首先被加载到存储器中,继之以在其上执行修改。 这样的修改可包括更新、插入或删除。例如,其中有两个雇员工作的部门可被加载 到存储器内。随后,雇员可被删除,或另一雇员可被添加到这样的部门,改变被存回数据库中。当雇员要被删除时,这样的删除可被显式指示。在一相关方面中,可通过实施两个约束,即维护对象身份以及确保作为检索 到的实体的一部分的实体集合的保真度来提供对象保真度。 一般,在数据库侧,可 经由主键维护对象身份,其中如果两个项目指向同一存储器位置并维持引用等同 性,则它们可被认为是相同的。当检索同一行两次(例如,经由查询的不同部分) 时,它们由同一对象(例如,身份图)表示。维护对象身份可通过维护对应于实体 的主键(或唯一键)值并一般确保对给定标识(id)值不存在一个以上的对象来实 现。同样地,为了确保作为检索到的实体的一部分的实体集合的保真度,对给定 的实体,实际上一般应可访问所有相关实体(例如,实体引用和实体集的导航)。 而且,本专利技术可提供对存储器的惰性加载和/或急性加载。例如,在其中有两个雇 员工作的部门的情况中,该部门可在不加载两个雇员的情况下加载(懒惰加载), 或也将可通过该部门触及的其他内容加载到存储器中(急性加载)。根据本专利技术的另一方面, 一跟踪组件可在改变发生时检测改变,且可仅创建 经改变的对象的副本。这可提供优化检测对象改变并维护原始值所需的空间和时间 的优化算法。另外,相应的比较工作可被显著减少。在一相关方面中,所感兴趣的对象的表中的每个对象均有状态。当添加一对 象时,跟踪组件可观察所有相关的项,且当一对象被标记为要删除时,所有相关的 子对象将均被自动删除。而且,当对象被改变时可提供通知,且可保存未经改变的 状态的副本,以便稍后与经修改的版本进行比较。因此,系统资源可被高效使用。 而且,可向程序员给出使用带有命令性框架的代码生成工具的选项,且他们可获得 这样的优化好处,或者按需编写类并丧失这样的优化。为了实现前述和相关目的,此处结合以下描述和附图描述了本专利技术的某些说 明性方面。然而,这些方面仅指示可采用本专利技术的原理的众多方式中的少数几种, 且本专利技术旨在包括所有这样的方面及其等效方式。本专利技术的其他优点和新颖的特征 当结合附图考虑本专利技术的以下详细描述时将是显而易见的。附图简述附图说明图1示出了对于对象关系映射系统示出数据库侧与存储器侧之间的关系的示 意图。图2示出了经由实体集和实体引用的一致性导航的实现,实体集和实体引用是维护底层关系的保真度的组件,它们从主键外键关系中形成。图3示出了用于三个类模型的零到多雇员关系以及与一雇员相关的零个或一个职位的示意图。图4示出了雇员的实体集与单个部门的实体引用之间的双向导航。 图5示出了职位的实体集与雇员的实体引用之间的另一双向导航。 图6示出了示出数据库侧与存储器侧之间的关系的示意图,其中实体集和实体引用提供对象本文档来自技高网...

【技术保护点】
一种用于对象关系映射的系统,包括:促进所述系统的存储器侧与数据库侧之间的双向关系的一致导航特征;以及作为所述一致导航特征的一部分的实体集数据对象组件和实体引用数据对象组件,以便提供对加载到存储器中的对象的对象图保真度以及所述对象在所述数据库侧中的持久表示。

【技术特征摘要】
【国外来华专利技术】US 2005-7-29 11/193,5741.一种用于对象关系映射的系统,包括促进所述系统的存储器侧与数据库侧之间的双向关系的一致导航特征;以及作为所述一致导航特征的一部分的实体集数据对象组件和实体引用数据对象组件,以便提供对加载到存储器中的对象的对象图保真度以及所述对象在所述数据库侧中的持久表示。2. 如权利要求l所述的系统,其特征在于,所述一致导航特征还包括在所述存储器侧与所述数据库侧之间双向一致的指针。3. 如权利要求l所述的系统,其特征在于,所述实体集数据对象组件带有对 应于所述数据库侧中的目标数据行的内容,所述实体集数据对象组件和所述实体弓「 用数据对象组件维护一对一和一对多关系之一。4. 如权利要求l所述的系统,其特征在于,还包括检测对于对象的改变的跟 踪组件。5. 如权利要求l所述的系统,其特征在于,所述存储器侧带有向所述系统提 供对象根的知识的感兴趣对象表。6. 如权利要求5所述的系统,其特征在于,还包括与所述感兴趣对象表中的 所述对象相关联的状态,用以表示要对所述对象执行的修改。7. 如权利要求6所述的系统,其特征在于,所述修改是对象的删除、插入和 更新的至少其中之一。8.如权利要求7所述的系统,其特征在于,还包括优化特征,它减轻了当所 述对象要被改变时对于对象图进行递归走查的要求。9. 一种用于管理对象关系映射的方法,包括 将...

【专利技术属性】
技术研发人员:HJM梅杰A赫杰斯伯格L伯洛格纳斯MJ沃伦PA豪拉姆DC库尔卡尼
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

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

1