ORM系统的实现方法及ORM系统与流程

文档序号:13982823阅读:833来源:国知局
ORM系统的实现方法及ORM系统与流程

本发明涉及数据库领域,具体而言,涉及一种orm系统的实现方法及orm系统。



背景技术:

相关技术中的对象关系映射(objectrelationalmapping,简称orm,或o/rm,或o/rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

(移动)互联网把人的存在提到空前高度,这一时期酝酿的场景化思维,注重用户体验,产品设计更多围绕用户的实际情况和消费习惯展开。场景化思维要求产品满足用户的可定制性和个性化,能够在多场景情况下普遍适用。

对象-关系映射框架的作用是在关系数据库和业务实体对象之间做一个映射,目的是提供易于理解的模型化数据的方法。相关技术中的orm框架(如mybais、hibernate、toplink等)虽然隐藏了数据层面的设计,但并没有从根本上降低数据访问复杂度,只是将复杂维度从一个点(sql,存储过程)转移到了另一个点(代码),切换场景或新加需求后一般都要根据新加的业务逻辑重新定义实体类、添加映射关系,难以满足定制化场景的使用要求。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

本发明实施例提供了一种orm系统的实现方法及orm系统,解决了相关技术中在使用数据库进行查询时过于复杂的技术问题。

根据本发明的一个实施例,提供了一种orm系统的实现方法,包括:获取对象关系映射orm系统中输入的逻辑字段;根据映射规则将所述逻辑字段映射为在orm系统中的物理字段;通过所述物理字段进行查询得到与所述逻辑字段对应的查询结果。

可选地,,所述映射规则包括以下至少之一:将逻辑字段直接映射为物理字段;通过预设算法对逻辑字段进行计算后进行映射得到物理字段。

可选地,通过所述物理字段进行查询得到与所述逻辑字段对应的查询结果包括:根据所述物理字段和查询条件生成结构化查询语言sql语句;在所述orm系统中使用所述sql语句进行查询得到与所述逻辑字段对应的查询结果。

可选地,获取orm系统中输入的逻辑字段包括以下之一:在所述orm系统的查询页面获取所述逻辑字段;调用访问接口接收所述逻辑字段。

可选地,,在根据映射规则将所述逻辑字段映射为在orm系统中的物理字段之前,所述方法还包括:配置所述逻辑字段、所述物理字段,以及生成与所述逻辑字段关联的映射规则。

可选地,获取orm系统中输入的逻辑字段包括:接收用户从预设的逻辑字段集中选择的逻辑字段。

可选地,根据映射规则将所述逻辑字段映射为在orm系统中的物理字段包括:从预置的映射结果集获取所述逻辑字段在orm系统中对应的物理字段,从预置的条件结果集获取所述逻辑字段条件在orm系统中对应的物理字段条件。

根据本发明的另一个实施例,提供了一种orm系统,包括:获取模块,用于获取对象关系映射orm系统中输入的逻辑字段;确定模块,用于根据映射规则将所述逻辑字段映射为在orm系统中的物理字段;处理模块,用于通过所述物理字段进行查询得到与所述逻辑字段对应的查询结果;其中,orm系统预置所述逻辑字段到所述物理字段的映射规则。

可选地,所述处理模块还包括:生成单元,用于根据所述物理字段和所述映射规则,以及输入的查询条件生成结构化查询语言sql语句;查询单元,用于在所述orm系统中使用所述sql语句进行查询得到与所述逻辑字段对应的查询结果。

可选地,所述映射规则包括以下至少之一:将逻辑字段直接映射为物理字段;通过预设算法对逻辑字段进行计算后进行映射得到物理字段。

可选地,所述获取模块用于在所述orm系统的查询页面获取所述逻辑字段;或,调用访问接口接收所述逻辑字段。

可选地,所述系统还包括:配置模块,用于在所述确定模块根据映射规则将所述逻辑字段映射为在orm系统中的物理字段之前,配置所述逻辑字段、所述物理字段,以及生成与所述逻辑字段关联的映射规则。

根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:

获取对象关系映射orm系统中输入的逻辑字段;

根据映射规则将所述逻辑字段映射为在orm系统中的物理字段;

通过所述物理字段进行查询得到与所述逻辑字段对应的查询结果。

通过本发明,获取对象关系映射orm系统中输入的逻辑字段;根据映射规则将所述逻辑字段映射为在orm系统中的物理字段;通过所述物理字段进行查询得到与所述逻辑字段对应的查询结果。通过将相关技术的orm模型中的对象到数据库表的映射,细粒度化为从逻辑字段到物理字段的映射,可以彻底屏蔽底层实现细节,降低数据访问的复杂度,解决了相关技术中在使用数据库进行查询时过于复杂的技术问题。因为细粒度化的映射关系脱离了特定场景对与其对应的实体类的约束,可以适用于需要定制化的大量查询需求的场景。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的orm系统的实现方法的流程图;

图2是根据本发明实施例的orm系统的结构框图;

图3为相关技术中使用的orm框架(a)和本发明提出的orm框架(b)对比图;

图4为本实施例中映射结果集合条件结果集生成过程示意图;

图5为本实施例中提出的orm框架被执行的过程示意图;

图6为本实施例中逻辑字段和数据库中物理字段的映射结果集;

图7为本实施例中提出的orm框架选择逻辑字段的示意图;

图8为本实施例中提出的orm框架选择查询条件的示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

在本实施例中提供了一种orm系统的实现方法,图1是根据本发明实施例的orm系统的实现方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,获取对象关系映射orm系统中输入的逻辑字段;

步骤s104,根据映射规则将逻辑字段映射为在orm系统中的物理字段;

步骤s106,通过物理字段进行查询得到与逻辑字段对应的查询结果。

通过上述步骤,获取对象关系映射orm系统中输入的逻辑字段;根据映射规则将逻辑字段映射为在orm系统中的物理字段;通过物理字段进行查询得到与逻辑字段对应的查询结果。通过将相关技术的orm模型中的对象到数据库表的映射,细粒度化为从逻辑字段到物理字段的映射,可以彻底屏蔽底层实现细节,降低数据访问的复杂度,解决了相关技术中在使用数据库进行查询时过于复杂的技术问题。因为细粒度化的映射关系脱离了特定场景对与其对应的实体类的约束,可以适用于需要定制化的大量查询需求的场景。

可选的,根据物理字段和映射规则得到逻辑字段的内容包括:s11,根据物理字段和查询条件生成结构化查询语言(structuredquerylanguage,简称为sql)语句;s12,在orm系统中使用sql语句进行查询得到与逻辑字段对应的查询结果。

可选的,本实施例中的映射规则包括多种映射规则:如直接将物理字段直接映射为逻辑字段;或者,通过预设算法对物理字段进行计算后得到逻辑字段,该预设算法预置在系统中。下面对其进行举例说明:

实例一,对含义明确的物理字段直接映射为逻辑字段,直接查询物理表中的相关字段获取逻辑字段。如用户名、时间、区域、节目名称等。

实例二,对需要将物理字段经过计算的逻辑字段,同样直接将物理字段映射为逻辑字段,但提供相应的计算方法。如节目观看时长、用户观看次数等,将用某次节目观看时长映射为逻辑字段,但是提供逻辑字段的求和计算方法,即可获得某个节目的总观看时长。

可选的,在orm系统中使用sql语句进行查询可以通过以下两种形式来实现:

在orm系统的查询页面使用sql语句进行查询;通过页面来实现逻辑字段、查询条件的组合;

在orm系统中使用sql语句通过调用的访问接口进行查询,将逻辑字段的组合设计为代码可访问的接口,逻辑字段与物理字段的映射过程、可执行sql的拼装和组合等过程与上述方法相同,在用户设置查询逻辑字段和相关查询条件步骤,系统不再提供相应的字段组合页面,而是提供可供代码调用的访问接口。

可选的,在确定逻辑字段在orm系统中对应的物理字段以及映射规则之前,还有系统的开发和准备阶段,包括:配置逻辑字段、物理字段,以及通过工具生成与逻辑字段关联的映射规则。映射规则可以是与逻辑字段关联的,通过输入的逻辑字段可以确定映射规则。

可选的,获取orm系统中输入的逻辑字段包括:接收用户从预设的逻辑字段集中选择的逻辑字段。接收用户为逻辑字段对应的表项输入的查询条件。也可以是用户编辑或者新建的逻辑字段和查询条件,系统在接收到新的逻辑字段和查询条件后可以对其进行保存,以便后续持久化使用。逻辑字段除了查询关键字字段外还包括查询条件字段。

可选的,在本实施例中,根据映射规则将逻辑字段映射为在orm系统中的物理字段包括:从预置的映射结果集获取逻辑字段在orm系统中对应的物理字段,从预置的条件结果集获取逻辑字段条件在orm系统中对应的物理字段条件。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。

实施例2

在本实施例中还提供了一种orm系统的实现装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的orm系统的结构框图,可以是应用的实现装置,如图2所示,该装置包括:

获取模块20,用于获取对象关系映射orm系统中输入的逻辑字段;

确定模块22,用于根据映射规则将逻辑字段映射为在orm系统中的物理字段;

处理模块24,用于通过物理字段进行查询得到与逻辑字段对应的查询结果;

其中,orm系统预置逻辑字段到物理字段的映射规则。

可选的,处理模块24还包括:生成单元,用于根据物理字段和映射规则,以及输入的查询条件生成结构化查询语言sql语句;查询单元,用于在orm系统中使用sql语句进行查询得到与逻辑字段对应的查询结果。

可选的,本实施例中的映射规则包括多种映射规则:如直接将物理字段直接映射为逻辑字段;或者,通过预设算法对物理字段进行计算后得到逻辑字段,该预设算法预置在系统中。下面对其进行举例说明:

实例一,对含义明确的物理字段直接映射为逻辑字段,直接查询物理表中的相关字段获取逻辑字段。如用户名、时间、区域、节目名称等。

实例二,对需要将物理字段经过计算的逻辑字段,同样直接将物理字段映射为逻辑字段,但提供相应的计算方法。如节目观看时长、用户观看次数等,将用某次节目观看时长映射为逻辑字段,但是提供逻辑字段的求和计算方法,即可获得某个节目的总观看时长。

可选的,映射规则包括以下至少之一:将逻辑字段直接映射为物理字段;通过预设算法对逻辑字段进行计算后进行映射得到物理字段。

可选的,获取模块用于在orm系统的查询页面获取逻辑字段;或,调用访问接口接收逻辑字段。

可选的,系统还包括:配置模块,用于在确定模块根据映射规则将逻辑字段映射为在orm系统中的物理字段之前,配置逻辑字段、物理字段,以及生成与逻辑字段关联的映射规则。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本实施例是根据本发明的可选实施例,用于结合具体的场景对本申请进行详细说明:

本实施例提供了一种采用细粒度映射设计关系数据库持久化的方法,将原来由对象到表的映射改为逻辑字段到物理字段的映射,脱离特定场景下某业务逻辑对其对应的实体类的约束,在多场景、定制化的环境下中能使逻辑层和物理层的映射关系普遍适用,且通过屏蔽物理底层实现细节,降低数据访问的复杂度,图3为相关技术中使用的orm框架(a)和本发明提出的orm框架(b)对比图,底层是关系型数据库管理系统(relationaldatabasemanagementsystem,简称为rdbms)相关技术中使用的orm框架针对每一种场景都要在数据库和实体类之间映射一次,而本实施例所示的orm框架则实现了一次映射,多种场景下普遍适用的目的。

本实施例通过将orm模型中的对象到数据库表的映射细粒度化为从逻辑字段到物理字段的映射。从而彻底屏蔽底层实现细节,降低数据访问的复杂度。因为细粒度化的映射关系脱离了特定场景对与其对应的实体类的约束,特别适用于需要定制化(如数据仓库系统的报表开发)等有大量查询需求的场景。

本实施例的方案包括如下:

将系统的关系数据库中保存的物理表(物理字段)对应的逻辑字段归纳总结为用户可能会查询到的信息,整理抽取为逻辑字段。

接下来做抽取整理得到的逻辑字段到关系数据库物理字段的映射关系,映射时按照统一的规则来实现,映射关系预置到系统中,以便于后续结构化查询语言sql(structuredquerylanguage)组装模块按照该规则实现查询sql的生成。

用户根据规则将相关的逻辑字段组合,调用查询接口或在直接在查询页面进行查询。

sql生成模块(通过软件来预定)按组装策略将待查询的逻辑字段按照映射关系和相关协议生成可以用来查询sql语句或代码。

最后系统执行查询sql,为用户返回查询结果。

通过本实施例,可以提出了将满足定制化、多场景的特性加入到orm框架设计中去的思路。可以较好的降低在定制化需求较多的场景中使用orm框架的开发难度和软件复杂度。提出了满足定制化、多场景的特性加入到orm框架设计具体方法。将目前流行的orm系统基于对象-表的映射细粒度化为逻辑字段到物理字段的映射,屏蔽了底层实现细节,降低了数据访问复杂度。因为解除了某特定场景对与其相关的实体类以及实体类元素的约束,可以在多场景中普遍适用,达到了一次设计,多场景通用的目的。

图4为本实施例中映射结果集合条件结果集生成过程示意图,图5为本发明实施例的orm框架被执行的过程示意图,本可选实施方式的整个过程的流程和相关模块的关系,用户选择或者输入逻辑字段和相关的查询条件,sql生成模块从已经预置的逻辑结果集和条件结果集中获取用户输入的逻辑字段和与其相关的查询条件对应的映射sql组装信息,并调用sql组装代码生成查询的sql语句,sql语句被数据库执行后,获得查询结果。

在本实施例的一个可选示例中,在所述orm系统的查询页面使用所述sql语句进行查询,可以在设计页面来实现逻辑字段、查询条件的组合,包括:

在orm系统的开发阶段,根据系统可提供的逻辑字段和数据库中实际存在的物理字段按照映射规则生成映射结果集和条件结果集。映射结果集和条件结果集的存储方式可以但不限于xml等格式的配置文件、数据库中的表或者存储过程。映射过程如图4所示,映射的结果如图6所示(映射结果作为系统的元数据保存在数据库表里面),图6为本实施例中逻辑字段和数据库中物理字段的映射结果集。映射工具将待查询逻辑字段和数据库物理字段根据映射规则集生成了映射结果集和条件结果集。

用户将自己的查询需求转化为系统提供的逻辑字段和逻辑字段对应的条件的组合,也即,系统接收用户从预设的逻辑字段集中选择的逻辑字段,以及接收用户为所述逻辑字段对应的表项输入的查询条件。如用户想获得2016年4月份某省份按城市分组的总观看时长和总观看流量,且流量区间为10mb区间,则用户需要:选择的逻辑字段为:城市名称、观看流量(kb)、观看时长(s),对后两个逻辑字段观看流量(kb)和观看时长(s)添加表达式“计算总和”,参见图7,图7为使用本发明提出的orm框架选择查询条件的示意图。设置相关的逻辑字段的查询条件。这里查询条件有两个:时间为2016年4月;流量区间为10mb区间。因此在设置逻辑字段查询提交阶段分别选择观看开始时间和播放流量名称,如图8所示,图8为本实施例中提出的orm框架选择查询条件的示意图。

本实施例中逻辑字段和数据库中物理字段的映射结果集。其中第一个字段为逻辑字段的名字,第二个字段为逻辑字段的描述,第三个字段为逻辑字段对应的数据库物理字段的所在的表名,第四个字段为物理字段名称。

用户设置好逻辑字段和相关条件之后,根据所述物理字段、所述映射规则和所述查询条件生成结构化查询语言sql语句,执行sql生成代码模块将用户设置好的逻辑字段和逻辑字段条件值,翻译成关系型数据库可以执行的sql代码。

关系型数据库执行生成的sql,获取想要查询的结果。

在本实施例的另一个可选示例中,在所述orm系统中使用所述sql语句通过调用的访问接口进行查询,可以将逻辑字段的组合设计为代码可访问的接口包括:

逻辑字段与物理字段的映射过程、可执行sql的拼装和组合等过程与上述示例相同,在用户设置查询逻辑字段和相关查询条件步骤,系统不再提供相应的字段组合页面,而是提供可供代码调用的访问接口。

针对本发明中较为关键的逻辑字段和物理字段的映射规则,下面提供细化的具体实施例:

可选的,在本实施例中,对含义明确的物理字段直接映射为逻辑字段,直接查询物理表中的相关字段获取逻辑字段。如用户名、时间、区域、节目名称等。对需要将物理字段经过计算的逻辑字段,同样直接将物理字段映射为逻辑字段,但提供相应的计算方法。如节目观看时长、用户观看次数等,将用某次节目观看时长映射为逻辑字段,但是提供逻辑字段的求和计算方法,即可获得某个节目的总观看时长。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s1,获取对象关系映射orm系统中输入的逻辑字段;

s2,确定所述逻辑字段在orm系统中对应的物理字段以及映射规则,所述映射规则为由所述物理字段转换至所述逻辑字段的转换方式;

s3,根据所述物理字段和所述映射规则得到所述逻辑字段的内容。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行获取对象关系映射orm系统中输入的逻辑字段;

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行确定所述逻辑字段在orm系统中对应的物理字段以及映射规则,所述映射规则为由所述物理字段转换至所述逻辑字段的转换方式;

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行根据所述物理字段和所述映射规则得到所述逻辑字段的内容。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1