首页> 中国专利> 将对象局部属性更新到关系数据库的方法及装置

将对象局部属性更新到关系数据库的方法及装置

摘要

本发明公开了一种将对象局部属性更新到关系数据库的方法及装置,所述方法包括:创建需要更新局部属性的对象;为所述对象的标识及所述对象中需要更新的属性赋值;将所述对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本;利用所述对象关系数据库映射工具将所述脚本中的信息持久化到所述关系数据库中。所述装置包括:对象关系数据库映射单元,对象生成单元,对象信息转换单元。利用本发明,可以简单、有效地实现对关系数据库中数据对象部分属性的更新。

著录项

  • 公开/公告号CN101021877A

    专利类型发明专利

  • 公开/公告日2007-08-22

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN200710087513.0

  • 发明设计人 李光明;唐永华;

    申请日2007-03-16

  • 分类号G06F17/30(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人逯长明

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 19:03:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-05-20

    授权

    授权

  • 2007-10-17

    实质审查的生效

    实质审查的生效

  • 2007-08-22

    公开

    公开

说明书

技术领域

本发明涉及数据处理技术,具体涉及一种在对象/关系数据库映射中,将对象局部属性更新到关系数据库的方法及装置。

背景技术

O/R-Mapping(对象/关系数据库映射)集成了面向对象和关系型数据库的映射转换,使我们在开发数据库应用时能享受到面向对象设计的好处。目前实现O/R-MAPPING的工具和方案很多,如Hibernate,TopLink,iBatis。利用这些工具,可以自动完成数据对象和关系数据库中数据表之间的映射,即提供了将一个数据对象持久化到关系数据库中的解决方案。

在对象持久化的过程中,有时候用户只想更新数据对象的部分属性。对于这种需求,目前业界各种O/R MAPPING工具中给出几种解决方案,具体有以下处理模式:

1.通过编写类似SQL(Structured Query Language,结构式询问语言)语句中的update处理脚本,用户把自己想要更新的几个属性,写成类似SQL语句的脚本,交给O/R MAPPING工具来处理。通过O/R MAPPING工具映射翻译成真正的数据库的SQL语句,并交给数据库执行,比如Hibernate的HQL(一种面向对象的查询语言),Oracle的TopLink采用XQuery等。

这种处理模式由于采用了一种类似SQL语句update脚本的处理模式,这就需要用户首先必须熟悉这种语句脚本的写法,而且由于通过脚本方式来实现,因此当对象的一些属性发生变化后,需要在程序中修改这些脚本,因而给用户开发程序带来一定的成本和复杂性。另外,由于这种脚本的特殊性(与具体工具紧密相关,是非通用的脚本),不便于程序移植和升级;同时由于这种脚本通常和后台的存储有较大的关联,因而也在一定程度上偏离了使用O/RMAPPING工具的初衷。

2.首先利用O/R MAPPING工具将该数据对象查询出来,这样数据对象的各个属性都有值,然后再重新赋值给需要更新的数据对象的属性,赋值完成后再通过O/R MAPPING工具持久化到数据库中。

由于一个对象传递给O/R MAPPING工具进行持久化的时候,O/RMAPPING处理工具无法知道该对象的哪些属性应该更新,哪些不应该更新,因此,在只需要更新一个对象中的部分属性时,就必须将该对象检索或刷新出来,这样就要多增加了一个查询动作,对系统性能会有比较严重的影响。

发明内容

本发明实施例提供一种将对象局部属性更新到关系数据库的方法及装置,以简单有效地实现对数据对象部分数据的更新,方便应用程序的开发和程序升级。

本发明实施例提供的一种将对象局部属性更新到关系数据库的方法,包括:

创建需要更新部分属性的对象;

为所述对象中需要更新的属性赋值;

将所述对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本;

利用所述对象关系数据库映射工具将所述脚本中的信息持久化到所述关系数据库中。

本发明实施例提供的另一种将对象局部属性更新到关系数据库的方法,包括:

创建需要更新部分属性的对象;

为所述对象中需要更新的属性赋值;

将所述对象及其属性信息转换为所述关系数据库能够识别的SQL语句;

执行所述SQL语句,完成所述关系数据库中数据对象部分属性的更新。

本发明实施例提供的一种将对象局部属性更新到关系数据库的装置,包括:

对象关系数据库映射单元,用于根据描述数据对象属性的脚本将数据对象持久化到所述关系数据库中;

对象生成单元,用于创建需要更新部分属性的对象及其属性信息;

对象信息转换单元,用于将所述对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本,并将所述脚本提交给所述对象关系数据库映射单元。

本发明实施例提供的另一种将对象局部属性更新到关系数据库的装置,包括:

对象生成单元,用于创建需要更新部分属性的对象及其属性信息;

对象信息转换单元,用于将所述对象及其属性信息转换为所述关系数据库能够识别的SQL语句,并将SQL语句提交给所述关系数据库。

由以上本发明实施例提供的技术方案可以看出,在对关系数据库中的对象进行部分属性更新时,只需创建一个对应的对象,并对该对象中需要更新的属性赋值,然后将该对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本,借助对象关系数据库映射工具将所述脚本中的信息持久化到所述关系数据库中;或者将该对象及其属性信息直接转换为关系数据库能够识别的SQL语句,由关系数据库根据所述SQL语句执行更新过程,从而实现了对关系数据库中对象属性的部分更新,避免了查询对象的所有属性对系统产生的影响。利用本发明实施例提供的装置,可以使用户在更新一个对象的部分属性时不需要再编写复杂的脚本或SQL语句,只需要直接创建一个对象,赋值该对象的关键标识和需要更新的属性,即可直接更新该对象的属性。

附图说明

图1是本发明方法第一实施例的流程图;

图2是本发明方法第二实施例的流程图;

图3是本发明装置第一实施例的原理框图;

图4是本发明装置第二实施例的原理框图;

图5是本发明装置第三实施例的原理框图;

图6是本发明装置第四实施例的原理框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明作进一步的详细说明。

参照图1,图1是本发明将对象局部属性更新到关系数据库的方法第一实施例的流程,包括以下步骤:

步骤101,创建需要更新部分属性的对象。

比如,需要更新的对象为“Student”,包括以下属性:Student ID、学生的姓名、学生的性别、学生的班级、学生的年龄。此时需要创建一个和该对象相同的空对象,也就是说,该对象中的各属性值还未被赋值。

步骤102,为该对象中需要更新的属性赋值。

首先,要为该对象的标识,即Student ID赋值,如果需要更新的属性有:学生的班级和学生的年龄,则还需要为这两个属性赋值。可以利用对象的set方法为需要更新的属性赋值。

步骤103,将该对象及其需要变更的属性信息记录下来,然后转换为对象关系数据库映射工具能够识别的脚本。

由于实现O/R MAPPING的工具很多,比如Hibernate,TopLink,iBatis等,因此,可以建立适用于这些对象关系数据库映射工具的对象属性与脚本语句的映射逻辑关系,在建立了新的对象并对其需要更新的属性赋值后,就可以提取出该对象及其属性信息,并依照该映射逻辑关系将其转换为相应的对象关系数据库映射工具能够识别的脚本。

步骤104,利用对象关系数据库映射工具将脚本中的信息更新到关系数据库中。

当然,在进行关系数据库中对象部分属性更新时,也可以不借助于对象关系数据库映射工具,而是向用户提供对象属性与关系数据库能够识别的SQL语句的映射逻辑关系,根据该映射逻辑关系将需要更新的对象及其属性信息转换为关系数据库的SQL语句,通过关系数据库提供的数据操作接口执行这些SQL语句,完成对该对象部分属性的更新。

参照图2,图2是本发明将对象局部属性更新到关系数据库的方法第二实施例的流程,包括以下步骤:

步骤201,创建需要更新部分属性的对象。

步骤202,为该对象中需要更新的属性赋值。

步骤203,将该对象及其属性信息转换为关系数据库能够识别的SQL语句。

同样,由于关系数据库可以通过不同的语言来建立,比如,Java、vc、vb等编程语言。因此,可以建立支持不同语言关系数据库的对象属性与SQL语句的映射逻辑关系,在建立了新的对象并对其需要更新的属性赋值后,就可以提取出该对象及其属性信息,并依照该映射逻辑关系将其转换为相应的关系数据库能够识别的SQL语句。

步骤204,利用关系数据库提供的数据操作接口执行所述SQL语句,完成关系数据库中数据对象部分属性的更新。

下面以Student对象来进行定义(以java程序进行描述),进一步说明将对象局部属性更新到关系数据库的过程。

Public student

{

      Private Long studentID   //学生ID

      Private  String Name     //学生的姓名

      Private  String Sex      //学生的性别

      Private  String Class    //学生的班级

      Private  int Age         //学生的年龄

Private Map modifyDESC=“”  //用来记录Student属性变化的情况,这里定义一个记录属性变化情况的buffer

Public void setstudentID(Long studentID)

{

   this.studentID=studentID;

}

Public Long getstudentID()

{

   Return this.studentID;

}

Public void setName(string name)

{

   this.Name=name;

   this.ModifyDESC.put(“class”,name)//把要局部更新的属性保存起来

}

Public String getName()

{

   Return this.Name;

}

Public void setSex(string sex)

{

   this.Sex=sex;

   this.ModifyDESC.put(“Sex”,sex)//把要局部更新的属性保存起来

}

Public String getSex()

{

   Return this.sex;

}

Public void setClass(string class)

{

   this.Class=class;

   this.ModifyDESC.put(“class”,name)//把要局部更新的属性保存起来

}

Public Long getClass()

{

   Return this.Name;

}

Public void setAge(int age)

{

   this.Age=age;

   this.ModifyDESC.put(“Age”,age)//把要局部更新的属性保存起来

}

Public int getAge()

{

   Return this.Age;

}

Public Map getmodifyDESC()//获取该MAP,通过该方法把变化的name、sex、class、Age等属性获取到

{

    Return this.Age;

  }

}

在上面的实例中,当应用程序调用数据对象的Set方法的时候,将把这个最新修改的值放到一种MAP类型的成员变量modifyDESC中。

例如,用户想更新一个学生编号ID=100001的年龄为18岁,则进行如下设置:

Student student=new Student();

Student.setstudentID(100001);

Student.setAge(18);//设置年龄

然后,将该对象及其需要更新的属性信息记录下来,并转换为对象关系数据库映射工具能够识别的脚本。然后,调用方法getmodifyDESC,获取该对象局部更新属性的集合MAP,并把该MAP的值取出来,翻译成SQL,或者O/RMAPPING所能执行的脚本。

本发明实施例还提供了一种将对象局部属性更新到关系数据库的装置,利用该装置,在更新一个对象的部分属性时不需要编写复杂的脚本或SQL语句,而只需要直接创建一个对象,赋值该对象的标识和需要更新的属性,然后由本发明装置实施例中提供的对象信息转换功能将该对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本,然后由对象关系数据库映射工具利用该脚本将所述对象需要更新的属性持久化到相应的关系数据库中;也可以由本发明装置实施例中提供的对象信息转换功能直接将该对象及其属性信息转换为相应的关系数据库能够识别的SQL语句,然后通过关系数据库本身提供的数据操作接口对该对象的这些属性进行更新。

参照图3,图3是本发明将对象局部属性更新到关系数据库的装置第一实施例的原理框图:

在该实施例中,包括:对象生成单元31、对象信息转换单元32和对象关系数据库映射单元33。其中,对象生成单元31用于创建需要更新部分属性的对象及其属性信息。

对象生成单元31包括:用户交互子单元311和存储子单元312。其中,用户交互子单元311用于提供用户接口,并通过所述用户接口创建需要更新部分属性的对象,并为所述对象中需要更新的属性赋值;存储子单元312用于存储所述对象及其属性值。

对象信息转换单元32用于将所述对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本,比如,预先在对象信息转换单元32建立对象属性与对象关系数据库映射工具能够识别的脚本语句的映射逻辑关系,对象信息转换单元32根据该映射逻辑关系将所述对象及其属性信息转换为对象关系数据库映射工具能够识别的脚本,并将所述脚本提交给对象关系数据库映射单元33。

对象关系数据库映射单元33用于根据描述数据对象属性的脚本将数据对象持久化到数据库30中,可以使用现有的对象关系数据库映射工具,比如,Hibernate,TopLink,iBatis等。根据对象关系数据库映射单元33使用的对象关系数据库映射工具的不同,相应地,对象信息转换单元32将所述对象及其属性信息转换的脚本也不同,具体可以根据实际对象关系数据库映射单元33使用的对象关系数据库映射工具来确定。

参照图4,图4是本发明将对象局部属性更新到关系数据库的装置第二实施例的原理框图:

与图3所示本发明装置第一实施例不同的是,在该实施例中,还包括映射逻辑单元34,用于提供对象信息转换单元32进行转换所需的对象属性与脚本语句的映射逻辑关系。映射逻辑单元34可以存储多种不同的映射逻辑关系,以适应对象关系数据库映射单元33使用各种不同的对象关系数据库映射工具的需要,方便用户根据实际情况来选用。为此,可以在对象信息转换单元32中设置对应于不同对象关系数据库映射工具的接口。利用该实施例,可以进一步提高本发明实施例装置的适用性。

参照图5,图5是本发明将对象局部属性更新到关系数据库的装置第三实施例的原理框图:

在该实施例中,包括:对象生成单元51和对象信息转换单元52。其中,对象生成单元51用于创建需要更新部分属性的对象及其属性信息。对象生成单元51与图3所示本发明装置第一实施例中对象生成单元31相同,包括:用户交互子单元511和存储子单元512。其中,用户交互子单元511用于提供用户接口,并通过所述用户接口创建需要更新部分属性的对象,并为所述对象中需要更新的属性赋值;存储子单元512用于存储所述对象及其属性值。

对象信息转换单元52用于将所述对象及其属性信息转换为关系数据库50能够识别的SQL语句,并通过与关系数据库50的接口将SQL语句提交给关系数据库50,实现关系数据库50中对象属性的更新。

根据关系数据库50支持的编程语言的不同,对象信息转换单元52将所述对象及其属性信息转换的SQL语句也不同,需要由具体的数据库来确定。

参照图6,图6是本发明关系数据库中数据对象更新的装置第四实施例的原理框图:

与图5所示本发明装置第三实施例不同的是,在该实施例中,还包括映射逻辑单元54,用于提供对象信息转换单元52进行转换所需的对象属性与SQL语句的映射逻辑关系。映射逻辑单元54可以存储多种不同的映射逻辑关系,以适应不同关系数据库的需要,方便用户根据实际情况来选用。利用该实施例,可以进一步提高本发明装置的适用性。

以上对本发明实施例所提供的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号