一种领域对象模型的持久化装置和方法

文档序号:6545166阅读:200来源:国知局
一种领域对象模型的持久化装置和方法
【专利摘要】本发明的实施例提供一种领域对象模型的持久化装置和方法,涉及计算机领域。提供一种对领域对象模型扩展属性进行持久化的方式,简化了对领域对象模型扩展属性进行持久化时的操作,提高了可行性与实用性。其方法为:通过获取领域对象以及领域对象对应的类定义与扩展模型定义,根据扩展模型定义与类定义中的扩展属性容器确定领域对象中各扩展属性对应的列名与列值,生成扩展列信息;进一步根据目标数据库类型,确定入库策略,并结合该入库策略将扩展列信息发送至目标数据库进行存储。本发明的实施例用于对领域对象模型的扩展属性进行持久化。
【专利说明】一种领域对象模型的持久化装置和方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种领域对象模型的持久化装置和方法。
【背景技术】
[0002]数据持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘),主要应用是将内存中的数据存储在数据库或磁盘文件中、XML数据文件中等等;领域对象模型,即领域对象的模型,可以被看作是一个系统的概念模型,用于定义系统中的各个实体及其之间的关系,记录了一个系统中的关键概念和词汇表,并定义了它们各自的属性。
[0003]目前,领域软件平台往往需要为相似领域的不同业务软件系统提供通用的领域能力支撑,以人员管理平台作为领域软件平台为例,可同时用于支撑图书馆职工管理系统、学校学生管理系统等不同的业务软件系统。同时,随着数据库的应用越来越广泛,各种数据持久化框架应运而生,通过将内存中的领域对象模型转换为存储模型,为领域软件平台的开发带来了极大的便利;
[0004]在现有技术应用中,领域软件平台除了为业务软件系统提供通用领域对象模型以夕卜,同时需要提供领域对象模型扩展能力,以满足各不同业务软件系统的领域对象模型差异化需求。然而,目前主流的数据持久化框架只能针对通用领域对象模型进行持久化,而对于领域对象模型扩展属性持久化,则需要强迫领域软件平台自身进行调整来适应不同业务软件系统的差异化要求,造成平台对业务软件系统的反向依赖,且在一个领域软件平台支撑多个业务软件系统时,造成扩展属性的冲突和泛滥。这样,导致业务软件系统对领域对象模型的扩展属性进行持久化时,操作复杂且可行性、实用性低。

【发明内容】

[0005]本发明的实施例提供一种领域对象模型的持久化装置和方法,使得业务软件系统在对领域对象模型进行扩展时,与领域软件平台相对隔离,避免对平台进行调整,且根据数据库的类型确定相应的入库策略实现统一的封装存储,以简化对领域对象模型的扩展属性进行持久化时的操作,提高可行性与实用性。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]第一方面,提供一种领域对象模型的持久化装置,所述装置包括:
[0008]获取单元,用于获取领域对象、所述领域对象对应的类定义与扩展模型定义;
[0009]所述领域对象包括至少一个扩展属性;所述类定义包括扩展属性容器,所述扩展属性容器用于承载各所述扩展属性的属性名与属性值;扩展模型定义用于指示各所述扩展属性的属性名与数据库表中列名的对应关系;
[0010]处理单元,用于根据所述获取单元获取的所述扩展模型定义与所述扩展属性容器,确定各所述扩展属性对应的列名与列值,并生成扩展列信息,所述扩展列信息包括至少一组与所述扩展属性对应的所述列名与列值;[0011 ] 入库单元,用于根据目标数据库类型确定入库策略,并结合所述入库策略,将所述处理单元获取的所述扩展列信息发送至所述目标数据库进行存储。
[0012]结合第一方面,在第一种可能的实现方式中,所述领域对象还包括至少一个基础属性;所述类定义包括基础属性容器,所述基础属性容器用于承载所述基础属性的属性名与属性值;
[0013]所述获取单元还用于获取所述领域对象对应的基础模型定义;所述基础模型定义用于指示各所述基础属性的属性名与数据库表中列名的对应关系;
[0014]所述处理单元还用于根据所述获取单元获取的所述基础模型定义与所述基础属性容器,确定各所述基础属性对应的列名与列值,并生成基础列信息,所述基础列信息包括至少一组与所述基础属性对应的所述列名与列值;
[0015]所述入库单元还用于结合所述入库策略,将所述处理单元获取的所述基础列信息发送至所述目标数据库进行存储。
[0016]结合第一方面,在第二种可能的实现方式中,所述处理单元具体用于:
[0017]根据所述扩展模型定义指示的各所述扩展属性的属性名与所述数据库表中列名的对应关系,确定各所述扩展属性对应的列名;
[0018]通过所述扩展属性容器获取各所述列名对应的列值,所述列值为通过所述扩展属性容器从所述领域对象中获取的与所述属性名对应的所述属性值。
[0019]结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述入库单元具体用于:
[0020]获取所述目标数据库类型,并根据所述目标数据库类型确定所述入库策略;所述入库策略包括:
[0021]使用与所述目标数据库类型对应的预设构造算法,根据所述扩展列信息或所述基础列信息生成入库消息,所述入库消息为包括至少一组相互对应的列名与列值的数据库语句或指令;
[0022]确定所述目标数据库类型对应的分类,使用所述分类对应的预设数据库访问接口,将生成的所述入库信息提交至所述目标数据库进行存储。
[0023]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述目标数据库类型对应的分类包括:关系型、非关系型;
[0024]所述入库单元使用所述分类对应的预设数据库访问接口包括:当所述分类为关系型时,使用预设关系型数据库访问接口 ;或,当所述分类为非关系型时,使用预设非关系型数据库访问接口。
[0025]第二方面,提供一种领域对象模型的持久化方法,所述方法包括:
[0026]获取领域对象、所述领域对象对应的类定义与扩展模型定义;
[0027]所述领域对象包括至少一个扩展属性;所述类定义包括扩展属性容器,所述扩展属性容器用于承载各所述扩展属性的属性名与属性值;扩展模型定义用于指示各所述扩展属性的属性名与数据库表中列名的对应关系;
[0028]根据所述扩展模型定义与所述扩展属性容器,确定各所述扩展属性对应的列名与列值,并生成扩展列信息,所述扩展列信息包括至少一组与所述扩展属性对应的所述列名与列值;[0029]根据目标数据库类型确定入库策略,并结合所述入库策略,将所述扩展列信息发送至所述目标数据库进行存储。
[0030]结合第二方面,在第一种可能的实现方式中,所述领域对象还包括至少一个基础属性;所述类定义包括基础属性容器,所述基础属性容器用于承载所述基础属性的属性名与属性值,所述方法还包括:
[0031]获取所述领域对象对应的基础模型定义;所述基础模型定义用于指示各所述基础属性的属性名与数据库表中列名的对应关系;
[0032]根据所述基础模型定义与所述基础属性容器,确定各所述基础属性对应的列名与列值,并生成基础列信息,所述基础列信息,包括至少一组与所述基础属性对应的所述列名与列值;
[0033]结合所述入库策略,将所述基础列信息发送至所述目标数据库进行存储。
[0034]结合第二方面,在第二种可能的实现方式中,所述确定各所述扩展属性对应的列名与列值,并生成扩展列信息包括:
[0035]根据所述扩展模型定义指示的各所述扩展属性的属性名与所述数据库表中列名的对应关系,确定各所述扩展属性对应的列名;
[0036]通过所述扩展属性容器获取各所述列名对应的列值,所述列值为通过所述扩展属性容器从所述领域对象中获取的与所述属性名对应的所述属性值。
[0037]结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述入库策略包括:
[0038]使用与所述目标数据库类型对应的预设构造算法,根据所述扩展列信息或所述基础列信息生成入库消息,所述入库消息为包括至少一组相互对应的列名与列值的数据库语句或指令;
[0039]确定所述目标数据库类型对应的分类,使用所述分类对应的预设数据库访问接口,将生成的所述入库信息提交至所述目标数据库进行存储。
[0040]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述目标数据库类型对应的分类包括:关系型、非关系型;
[0041]所述使用所述分类对应的预设数据库访问接口包括:当所述分类为关系型时,使用预设关系型数据库访问接口 ;或,当所述分类为非关系型时,使用预设非关系型数据库访问接口。
[0042]可见,本发明的实施例提供一种领域对象模型的持久化装置和方法,通过获取领域对象以及领域对象对应的类定义与扩展模型定义,根据扩展模型定义与类定义中的扩展属性容器确定领域对象中各扩展属性对应的列名与列值,生成扩展列信息,进一步根据目标数据库类型,确定构造策略,并结合该构造策略将扩展列信息发送至目标数据库进行存储;这样,避免了在对领域对象模型进行扩展时对领域软件平台进行调整,且根据数据库的类型确定相应的构造策略实现统一的封装存储,简化了对领域对象模型的扩展属性进行持久化时的操作,提高了可行性与实用性。
【专利附图】

【附图说明】
[0043]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本发明实施例提供的一种领域对象模型的持久化装置的结构示意图;
[0045]图2为本发明实施例提供的一种领域对象模型的持久化方法的流程示意图;
[0046]图3为本发明实施例提供的一种领域对象模型的持久化装置的结构示意图。
【具体实施方式】
[0047]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0048]本发明的实施例提供一种领域对象模型的持久化装置00,如图1所示,该装置00包括:
[0049]获取单元001、处理单元002、入库单元003。
[0050]具体的,该获取单元001,用于获取领域对象、领域对象对应的类定义与扩展模型定义;该领域对象包括至少一个扩展属性,且对应的类定义包括扩展属性容器。
[0051]可选的,该获取单元001获取的领域对象还可以包括至少一个基础属性,且该领域对象对应的类定义还可以包括基础属性容器;该获取单元001还可以用于获取基础模型定义。
[0052]示例性的,获取单元001可以通过对象接口从业务软件系统获取领域对象;该领域对象可以为业务软件系统自身存储的,也可以为业务软件系统通过交互接口从客户系统接收外部输入获取的,此处不做限定;该获取单元001获取的领域对象可以包括一个或多个基础属性,还可以包括至少一个扩展属性。
[0053]进一步的,以学校教务管理软件系统提供的领域对象为例,领域对象可以包括基础属性如:学号(userID)、姓名(UserName)、年龄(UserAge)等,以及其各自对应的属性值:学号(userID)为“10001”、姓名(userName)为“Joyh”、年龄(userAge)为“25”;还可以包括扩展属性如:性别(userSex)、出生日期(userDate)等,以及其各自对应的属性值:性别(userSex)为“男”、出生日期(userDate)为 “1985 年 I 月 I 日”。
[0054]示例性的,获取单元001获取的类定义可以包括一个或多个基础属性容器,该基础属性容器用于承载上述领域对象各基础属性的属性名与属性值,还可以包括扩展属性容器,该扩展属性容器用于承载上述领域对象各扩展属性的属性名与属性值;且获取单元001可以通过自身的类管理器从领域软件平台加载与领域对象相对应的上述类定义;该类定义可以为领域软件平台提供的,且对于不同类型的领域对象,存在不同的类定义与之相对应。
[0055]值得一提的,上述基础属性容器为上述类定义中对领域对象中一个或多个既定基础属性的描述,可以为指定的一个或多个变量名、内存空间;上述扩展属性容器为类定义中对未定扩展属性预留的描述,可以为预设的接口。且上述基础属性容器与扩展属性容器的具体的实现方式此处不做限定。[0056]进一步的,以与上述学校教务管理软件系统提供的领域对象相对于的类定义为
例,示意如下:
[0057]
【权利要求】
1.一种领域对象模型的持久化装置,其特征在于,所述装置包括: 获取单元,用于获取领域对象、所述领域对象对应的类定义与扩展模型定义; 所述领域对象包括至少一个扩展属性;所述类定义包括扩展属性容器,所述扩展属性容器用于承载各所述扩展属性的属性名与属性值;扩展模型定义用于指示各所述扩展属性的属性名与数据库表中列名的对应关系; 处理单元,用于根据所述获取单元获取的所述扩展模型定义与所述扩展属性容器,确定各所述扩展属性对应的列 名与列值,并生成扩展列信息,所述扩展列信息包括至少一组与所述扩展属性对应的所述列名与列值; 入库单元,用于根据目标数据库类型确定入库策略,并结合所述入库策略,将所述处理单元获取的所述扩展列信息发送至所述目标数据库进行存储。
2.根据权利要求1所述的装置,其特征在于,所述领域对象还包括至少一个基础属性;所述类定义包括基础属性容器,所述基础属性容器用于承载所述基础属性的属性名与属性值; 所述获取单元还用于获取所述领域对象对应的基础模型定义;所述基础模型定义用于指示各所述基础属性的属性名与数据库表中列名的对应关系; 所述处理单元还用于根据所述获取单元获取的所述基础模型定义与所述基础属性容器,确定各所述基础属性对应的列名与列值,并生成基础列信息,所述基础列信息包括至少一组与所述基础属性对应的所述列名与列值; 所述入库单元还用于结合所述入库策略,将所述处理单元获取的所述基础列信息发送至所述目标数据库进行存储。
3.根据权利要求1所述的装置,其特征在于,所述处理单元具体用于: 根据所述扩展模型定义指示的各所述扩展属性的属性名与所述数据库表中列名的对应关系,确定各所述扩展属性对应的列名; 通过所述扩展属性容器获取各所述列名对应的列值,所述列值为通过所述扩展属性容器从所述领域对象中获取的与所述属性名对应的所述属性值。
4.根据权利要求1或2所述的装置,其特征在于,所述入库单元具体用于: 获取所述目标数据库类型,并根据所述目标数据库类型确定所述入库策略;所述入库策略包括: 使用与所述目标数据库类型对应的预设构造算法,根据所述扩展列信息或所述基础列信息生成入库消息,所述入库消息为包括至少一组相互对应的列名与列值的数据库语句或指令; 确定所述目标数据库类型对应的分类,使用所述分类对应的预设数据库访问接口,将生成的所述入库信息提交至所述目标数据库进行存储。
5.根据权利要求4所述的装置,其特征在于, 所述目标数据库类型对应的分类包括:关系型、非关系型; 所述入库单元使用所述分类对应的预设数据库访问接口包括:当所述分类为关系型时,使用预设关系型数据库访问接口 ;或,当所述分类为非关系型时,使用预设非关系型数据库访问接口。
6.一种领域对象模型的持久化方法,其特征在于,所述方法包括:获取领域对象、所述领域对象对应的类定义与扩展模型定义; 所述领域对象包括至少一个扩展属性;所述类定义包括扩展属性容器,所述扩展属性容器用于承载各所述扩展属性的属性名与属性值;扩展模型定义用于指示各所述扩展属性的属性名与数据库表中列名的对应关系; 根据所述扩展模型定义与所述扩展属性容器,确定各所述扩展属性对应的列名与列值,并生成扩展列信息,所述扩展列信息包括至少一组与所述扩展属性对应的所述列名与列值; 根据目标数据库类型确定入库策略,并结合所述入库策略,将所述扩展列信息发送至所述目标数据库进行存储。
7.根据权利要求6所述的方法,其特征在于,所述领域对象还包括至少一个基础属性;所述类定义包括基础属性容器,所述基础属性容器用于承载所述基础属性的属性名与属性值,所述方法还包括: 获取所述领域对象对应的基础模型定义;所述基础模型定义用于指示各所述基础属性的属性名与数据库表中列名的对应关系; 根据所述基础模型定义与所述基础属性容器,确定各所述基础属性对应的列名与列值,并生成基础列信息,所述基础列信息,包括至少一组与所述基础属性对应的所述列名与列值; 结合所述入库策略 ,将所述基础列信息发送至所述目标数据库进行存储。
8.根据权利要求6所述的方法,其特征在于,所述确定各所述扩展属性对应的列名与列值,并生成扩展列信息包括: 根据所述扩展模型定义指示的各所述扩展属性的属性名与所述数据库表中列名的对应关系,确定各所述扩展属性对应的列名; 通过所述扩展属性容器获取各所述列名对应的列值,所述列值为通过所述扩展属性容器从所述领域对象中获取的与所述属性名对应的所述属性值。
9.根据权利要求6或7所述的方法,其特征在于,所述入库策略包括: 使用与所述目标数据库类型对应的预设构造算法,根据所述扩展列信息或所述基础列信息生成入库消息,所述入库消息为包括至少一组相互对应的列名与列值的数据库语句或指令; 确定所述目标数据库类型对应的分类,使用所述分类对应的预设数据库访问接口,将生成的所述入库信息提交至所述目标数据库进行存储。
10.根据权利要求9所述的方法,其特征在于, 所述目标数据库类型对应的分类包括:关系型、非关系型; 所述使用所述分类对应的预设数据库访问接口包括:当所述分类为关系型时,使用预设关系型数据库访问接口 ;或,当所述分类为非关系型时,使用预设非关系型数据库访问接□。
【文档编号】G06F9/44GK103955370SQ201410175905
【公开日】2014年7月30日 申请日期:2014年4月28日 优先权日:2014年4月28日
【发明者】尹晨辉 申请人:华为软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1