CN113656433A - 实体对象扩展方法、装置、电子设备和存储介质 - Google Patents
实体对象扩展方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113656433A CN113656433A CN202110938822.4A CN202110938822A CN113656433A CN 113656433 A CN113656433 A CN 113656433A CN 202110938822 A CN202110938822 A CN 202110938822A CN 113656433 A CN113656433 A CN 113656433A
- Authority
- CN
- China
- Prior art keywords
- extension
- extended
- database
- sql
- orm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种实体对象扩展方法、装置、电子设备和存储介质,该实体对象扩展方法包括:获取应用程序的原对象中加入的扩展对象;获取扩展对象对应的对象关系映射ORM文件;根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句;调用SQL执行器执行该SQL语句,以将扩展对象持久化存储至数据库。本发明实施例提供了一种实体对象扩展框架,通过实体对象扩展框架将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而将扩展对象存入数据库实现实体对象的扩展,整个扩展不需要应用程序事先感知,因而不需要改变程序代码,实现了在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种实体对象扩展方法、装置、电子设备和存储介质。
背景技术
在企业全面数字化转型和中台化的大背景下,衡量一个中台软件好坏的一个很重要的指标就是看这个中台软件是否具备应对不同场景、不同需求的扩展能力,而中台软件的扩展能力中很重要的一个方面是对实体对象进行扩展,比如:增加字段、增加实体间关系等。
在实现本发明的过程中,发明人发现,通常情况下,当软件开发完毕后,实体对象的逻辑模型和物理模型就固定下来了,要想不改变原有程序代码进行实体对象扩展非常困难,而如果改变程序代码又会增加开发成本。
发明内容
本发明实施例提供一种实体对象扩展方法、装置、电子设备和存储介质,能够在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
第一方面,本发明实施例提供一种实体对象扩展方法,包括:
获取应用程序的原对象中加入的扩展对象;
获取所述扩展对象对应的对象关系映射ORM文件;
根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句;
调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库。
第二方面,本发明实施例提供一种实体对象扩展装置,所述装置包括:
第一获取模块,用于获取应用程序的原对象中加入的扩展对象;
第二获取模块,用于获取所述扩展对象对应的对象关系映射ORM文件;
转换模块,用于根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句;
存储模块,用于调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的实体对象扩展方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的实体对象扩展方法。
本发明实施例中,在扩展实体对象时,可以将扩展对象加入到应用程序的原对象中,通过获取扩展对象对应的对象关系映射ORM文件,根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句,调用SQL执行器执行该SQL语句,从而将扩展对象持久化存储至数据库,实现实体对象的扩展。本发明实施例提供的实体对象扩展方法可通过设计的实体扩展框架实现,即本发明实施例可以通过实体对象扩展框架将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而将扩展对象存入数据库实现实体对象的扩展,整个扩展不需要应用程序事先感知,因而不需要改变程序代码,实现了在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
另外,可以根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段(即扩展原表)以存储扩展对象,或者根据扩展对象的目标字段和目标字段类型在数据库中新建数据表(即新建数据表)以存储扩展对象,或者直接在扩展实体对象时,在数据库内原对象的数据表中增加非结构化扩展字段(即扩展原表)以存储扩展对象;即通过在需要的时候采用在数据库中扩展原表或新建数据表的方式存储扩展对象,可以不用在数据库中预留用于对象扩展的字段,避免事先预留字段进行实体对象扩展导致的各种问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的实体对象扩展方法的一个流程示意图。
图2是本发明实施例提供的实体对象扩展方法的另一流程示意图。
图3是本发明实施例提供的实体对象扩展方法的整体框架图。
图4是本发明实施例提供的ORM文件的一个结构示意图。
图5是本发明实施例提供的实体对象扩展装置的一个结构示意图。
图6是本发明实施例提供的电子设备的一个结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
目前,有两种方法可以实现实体对象扩展,一是通过修改原有程序代码实现实体对象扩展,二是采用预留字段的方式实现实体对象扩展。这两种方法都存在一些弊端。
第一种方法实现起来比较困难,会增加开发成本,第二种方法可能存在如下问题:
一、预留的字段过少不够用,这种情况下还是需要修改源程序代码,以增加逻辑字段,同时还修改数据库增加物理表字段;而如果预留字段过多则会浪费存储空间,同时会导致很多无效的字段映射,降低系统处理效率,影响性能。
二、只能在数据库原表上预留固定扩展字段,不支持扩展表扩展,导致原有数据与扩展数据耦合,影响存储和查询性能。
三、预留字段的数据类型不确定,导致只能统一使用文本类型,这样存储效率很低,对浮点数据可能会出现精度丢失情况。
四、因预留字段的实际用途事先不确定,导致无法建立有效索引,无法参与条件查询。
五、只能进行常规字段扩展,不能进行关系扩展。
六、为配合数据库预留字段,在实体对象中预留固定数量扩展属性,也存在数量不够,数据类型不确定的问题。
七、数据库预留的字段的命名不确定,导致实体对象中对应的属性命名也不确定,故通常采用无含义的编号进行数据库扩展字段和实体对象扩展属性的命名,在实际应用中需要额外建立字典表将无含义的名称翻译转换成有含义的名称,极大增加了系统复杂度。
本发明实施例提供了一种实体对象扩展方法,可以在不改变程序代码、不预留字段的情况下实现实体对象的扩展。下面介绍本发明实施例提供的实体对象扩展方法,图1为本发明实施例提供的实体对象扩展方法的一个流程示意图,该方法可以由本发明实施例提供的实体对象扩展装置来执行,该装置可采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在电子设备中,电子设备比如可以是服务器。以下实施例将以该装置集成在电子设备中为例进行说明,参考图1,该方法具体可以包括如下步骤:
步骤101,获取应用程序的原对象中加入的扩展对象。
示例地,应用程序可以是中台软件程序,原对象可以是在开发阶段为应用程序设计的对象,原对象可以是Java对象,具体地的原对象例如可以是:物品对象、订单对象等。扩展对象可以是在应用程序的使用阶段需要加入应用程序的实体对象,扩展对象可以和原对象配合进行事物处理,扩展对象可以包括一个或多个。本发明实施例中,扩展对象可以通过公共的基类Object派生。
具体实现中,可以在原对象中设置扩展对象域,扩展对象域可以为原对象中的预留容器,该预留容器可以是预留的一个待扩展的属性容器,属性容器可以理解为是一个能容纳许多属性对象的结构体。本发明实施例中,该属性容器中可以装入一个或多个扩展对象,所装入的扩展对象可以是从基类派生的任意扩展对象,此处对扩展对象的结构不做限制。具体地,可以根据用户操作将扩展对象装入原对象的扩展对象域,在进行实体对象扩展时,可以从原对象的扩展对象域获取扩展对象。
步骤102,获取扩展对象对应的对象关系映射ORM文件。
对象关系映射(Object Relational Mapping,ORM),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。具体在本发明实施例中,可以预先建立扩展对象注册表,扩展对象注册表中可以包括多个扩展对象分别对应的ORM文件的存储路径,在对当前的扩展对象进行处理时,可以从扩展对象注册表中获取为当前的扩展对象对应的ORM文件的存储路径,根据该扩展对象对应的ORM文件的存储路径从对应位置获取该扩展对象对应的ORM文件。示例地,该存储路径可以是保存路径,也可以是统一资源定位系统(uniform resource locator,URL)。
步骤103,根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句。
具体地,扩展对象的实例数据可以包括所述扩展对象的属性(属性值)和属性类型,可以根据扩展对象对应的ORM文件将扩展对象的属性转换成目标字段(目标字段值),并将扩展对象的属性类型转换成目标字段类型,其中,目标字段类型可以由数据库支持的字段类型来确定,即可以将扩展对象的属性值转换成数据库支持类型的字段值。以数据库为结构化查询语言(Structured Query Language,SQL)数据库为例,该数据库支持的字段类型比如:整型、浮点型、字符串型等。例如,扩展对象的属性包括时间、日期等,则可以把时间、日期转换成数据库支持类型的字段。
在得到扩展对象的目标字段和目标字段类型之后,可以根据扩展对象的目标字段和目标字段类型生成SQL语句,SQL语句中包括目标字段类型的目标字段。
步骤104,调用SQL执行器执行该SQL语句,以将扩展对象持久化存储至数据库。
具体实现中,可以采用如下几种方法将扩展对象持久化存储至数据库:
(1)根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段;调用SQL执行器连接数据库并执行该SQL语句,以将扩展对象持久化存储至原对象的数据表中增加的目标结构扩展字段内。
即扩展原表(对原对象的数据表扩展得到)以存储扩展对象的目标字段值(由扩展对象的属性值转换得到)。
(2)根据扩展对象的目标字段和目标字段类型在数据库中新建数据表;调用SQL执行器连接数据库并执行该SQL语句,以将扩展对象持久化存储至新建的数据表内。
即新建数据表以存储扩展对象的目标字段值。
(3)在数据库内原对象的数据表中增加非结构化扩展字段;调用SQL执行器连接数据库并执行该SQL语句,以将扩展对象持久化存储至原对象的数据表中增加的非结构化扩展字段内。
即扩展原表以存储扩展对象的目标字段值,非结构化扩展字段比如JS对象简谱(JavaScript Object Notation,JSON)结构的扩展字段,JSON结构是一个可扩展的键key/值Value存储结构,不需要预留固定字段,JSON结构的扩展字段本质上是一个字符串。
方法(3)与方法(1)不同之处在于:方法(1)在原表中增加的扩展字段是依据扩展对象进行结构约束的,可以根据业务需要建立数据库索引,这样就可以高效参与查询;而方法(3)在原表中增加的JSON结构的扩展字段缺少严格的数据类型和数据约束语义定义,不能支持索引和条件查询。具体应用中,可以根据实际需要优先选择方法(1)或方法(2)。
本发明实施例中,在扩展实体对象时,可以将扩展对象加入到应用程序的原对象中,通过获取扩展对象对应的对象关系映射ORM文件,根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句,调用SQL执行器执行该SQL语句,从而将扩展对象持久化存储至数据库,实现实体对象的扩展。本发明实施例提供的实体对象扩展方法可通过设计的实体扩展框架实现,即本发明实施例可以通过实体对象扩展框架将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而将扩展对象存入数据库实现实体对象的扩展,整个扩展不需要应用程序事先感知,因而不需要改变程序代码,实现了在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
另外,可以根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段(即扩展原表)以存储扩展对象,或者根据扩展对象的目标字段和目标字段类型在数据库中新建数据表(即新建数据表)以存储扩展对象,或者直接在扩展实体对象时,在数据库内原对象的数据表中增加非结构化扩展字段(即扩展原表)以存储扩展对象;即通过在需要的时候采用在数据库中扩展原表或新建数据表的方式存储扩展对象,可以不用在数据库中预留用于对象扩展的字段,避免事先预留字段进行实体对象扩展导致的各种问题。
下面结合图2和图3进一步描述本发明实施例提供的实体对象扩展方法,图2是本发明实施例提供的实体对象扩展方法的另一流程示意图,图3是本发明实施例提供的实体对象扩展方法的整体框架图。本发明实施例中,可以在应用程序的原框架中注入实体扩展框架,从而得到用于实体对象扩展的整体框架。具体地,可以通过Spring面向切面编程(Aspect Oriented Programming,AOP)机制将实体扩展框架注入到应用程序的持久化处理器之后、SQL执行器之前。AOP指一种程序设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点(crosscutting concern)。AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入到面向对象的软件系统中,从而实现了横切关注点的模块化。其原理是通过织入(Weaving),将切面逻辑应用到目标对象从而创建出AOP代理对象的过程。具体地,如图3所示,注入的实体扩展框架可以包括ORM映射选择器和扩展ORM处理器。
参考图2,本实施例的实体对象扩展方法具体可以包括如下步骤:
步骤201,获取应用程序的原对象中加入的扩展对象。
示例地,应用程序可以是中台软件程序,原对象可以是在开发阶段为应用程序设计的对象,原对象可以是Java对象,具体地的原对象例如可以是:物品对象、订单对象等。扩展对象可以是在应用程序的使用阶段需要加入应用程序的实体对象,扩展对象可以和原对象配合进行事物处理,扩展对象可以包括一个或多个。本发明实施例中,扩展对象可以通过公共的基类Object派生。
具体实现中,如图3所示,可以在原对象中设置扩展对象域,扩展对象域可以为原对象中的预留容器,该预留容器可以是预留的一个待扩展的属性容器,属性容器可以理解为是一个能容纳许多属性对象的结构体。本发明实施例中,该属性容器中可以装入一个或多个扩展对象(例如图3中的扩展对象1、扩展对象2、扩展对象3),即扩展对象与属性容器的数量比例可以为N:1,N为正整数;所装入的扩展对象可以是从基类派生的任意扩展对象,此处对扩展对象的结构不做限制,装入扩展对象可以理解为装入扩展对象的实例数据,该实例数据可以包括属性(属性值)、属性类型等。具体地,可以根据用户操作将扩展对象装入原对象的扩展对象域,在进行实体对象扩展时,可以通过实体扩展框架的扩展ORM处理器遍历原对象的扩展对象域,从而获取扩展对象。另外,原对象中还具有原有字段域,原有字段域用于装入原对象的实例数据。
步骤202,从扩展对象注册表中获取扩展对象对应的ORM文件的存储路径。
具体地,可以预先建立扩展对象注册表,扩展对象注册表中可以包括多个扩展对象分别对应的ORM文件的存储路径,在对当前的扩展对象进行处理时,可以调用实体扩展框架的ORM映射选择器从扩展对象注册表中获取为当前的扩展对象对应的ORM文件的存储路径,根据该扩展对象对应的ORM文件的存储路径从对应位置获取该扩展对象对应的ORM文件。示例地,该存储路径可以是保存路径,也可以是统一资源定位系统(uniform resourcelocator,URL)。
一个具体的扩展对象注册表可如下表1所示:
表1
步骤203,根据扩展对象对应的ORM文件的存储路径获取扩展对象对应ORM文件。
示例地,比如扩展对象注册表如表1所示,当前的扩展对象为扩展对象2,则查询表1可知扩展对象2的ORM文件为ORM文件2,则可以从表1获取ORM文件2的存储路径,根据ORM文件2的存储路径可以从对应位置获取ORM文件2。
步骤204,根据ORM文件将扩展对象的属性转换成目标字段,并将扩展对象的属性类型转换成目标字段类型。
其中,目标字段类型可以由数据库支持的字段类型来确定,即可以将扩展对象的属性值转换成数据库支持类型的字段值。以数据库为结构化查询语言(Structured QueryLanguage,SQL)数据库为例,该数据库支持的字段类型比如:整型、浮点型、字符串型等。例如,扩展对象的属性包括时间、日期等,则可以把时间、日期转换成数据库支持类型的字段。
示例地,一个扩展对象可以包括多个属性及属性类型,可以根据ORM文件将扩展对象的每个属性和属性类型对应转换目标字段和目标字段类型。一个扩展对象的ORM文件例如可如图4所示,该扩展对象包括多个属性:属性1、属性2……,则可根据该扩展对象的ORM文件将属性1转换成字段1、将属性2转换成字段2,属性类型也可以做对应的转换。
步骤205,根据扩展对象的目标字段和目标字段类型生成SQL语句。
即在得到扩展对象的目标字段和目标字段类型之后,可以根据扩展对象的目标字段和目标字段类型生成SQL语句,SQL语句中包括目标字段类型的目标字段。
步骤206,调用SQL执行器执行该SQL语句,以将扩展对象持久化存储至数据库。
具体实现中,可以采用如下几种方法将扩展对象持久化存储至数据库:
(1)根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段;调用SQL执行器连接数据库并执行该SQL语句,以将扩展对象持久化存储至原对象的数据表中增加的目标结构扩展字段内。
即扩展原表(对原对象的数据表扩展得到)以存储扩展对象的目标字段值(由扩展对象的属性值转换得到)。比如扩展对象为扩展对象3,采用扩展原表的方式存储扩展对象3,则对原对象的数据表进行扩展得到的数据表可如下表2所示:
原ID | 原字段 | 扩展对象3的扩展字段 |
001 | X1 | X31 |
002 | X2 | X32 |
表2
表2中,原ID为原对象的标识,原字段为原对象的字段,扩展对象3的扩展字段即用于存储扩展对象3的目标字段。
(2)根据扩展对象的目标字段和目标字段类型在数据库中新建数据表;调用SQL执行器连接数据库并执行该SQL语句,以将扩展对象持久化存储至新建的数据表内。
即在数据库中新建数据表以存储扩展对象的目标字段值。以扩展对象为扩展对象1为例,则用来存储扩展对象1的新建数据表可如下表3所示:
扩展字段 | 扩展字段 | 原ID |
X11 | X13 | 001 |
X12 | X14 | 002 |
表3
表3中的扩展字段即用于存储扩展对象1的目标字段,原ID为原对象的标识。
另外,在新建数据表时,还可以根据业务需要为新建的数据表建立索引,这样新建的数据表就可以参与条件查询。通过新建数据表存储扩展对象的方式,可以使原有数据与扩展数据解耦,提高存储和查询性能。
(3)在数据库内原对象的数据表中增加非结构化扩展字段;调用SQL执行器连接数据库并执行该SQL语句,以将扩展对象持久化存储至原对象的数据表中增加的非结构化扩展字段内。
即扩展原表以存储扩展对象的目标字段值,非结构化扩展字段比如JS对象简谱(JavaScript Object Notation,JSON)结构的扩展字段,JSON结构是一个可扩展的键key/值Value存储结构,不需要预留固定字段,JSON结构的扩展字段本质上是一个字符串。
在一个具体的实施例中,扩展字段还可以包括关系字段,关系字段可以是外键,可以通过外键来关联数据库中的其他实体对象的数据表,从而实现关系扩展。
此外,针对原对象,可以直接采用持久化处理器将原对象的实例数据转换成SQL语句,然后调用SQL执行器执行该SQL语句从而将原对象持久化存储至数据库。本发明实施例,实体扩展框架相当于在应用程序对象持久化处理过程中,通过拦截调用的机制,打开了一个口子,这个口子就可以用于对象扩展,通过动态映射将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而实现实体对象的扩展,而这种扩展不需要事先有应用程序感知,因而,本发明实施例的扩展方案,无需改变程序代码,在需要的时候在数据库建立数据表或扩展原表以存储扩展对象,无需预留字段用于实体对象的扩展。
本发明实施例中,在扩展实体对象时,可以将扩展对象加入到应用程序的原对象中,通过获取扩展对象对应的对象关系映射ORM文件,根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句,调用SQL执行器执行该SQL语句,从而将扩展对象持久化存储至数据库,实现实体对象的扩展。本发明实施例提供的实体对象扩展方法可通过设计的实体扩展框架实现,即本发明实施例可以通过实体对象扩展框架将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而将扩展对象存入数据库实现实体对象的扩展,整个扩展不需要应用程序事先感知,因而不需要改变程序代码,实现了在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
另外,可以根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段(即扩展原表)以存储扩展对象,或者根据扩展对象的目标字段和目标字段类型在数据库中新建数据表(即新建数据表)以存储扩展对象,或者直接在扩展实体对象时,在数据库内原对象的数据表中增加非结构化扩展字段(即扩展原表)以存储扩展对象;即通过在需要的时候采用在数据库中扩展原表或新建数据表的方式存储扩展对象,可以不用在数据库中预留用于对象扩展的字段,避免事先预留字段进行实体对象扩展导致的各种问题。
图5是本发明是实施例提供的实体对象扩展装置的一个结构图,该装置适用于执行本发明实施例提供的实体对象扩展方法。如图5所示,该装置具体可以包括:
第一获取模块401,用于获取应用程序的原对象中加入的扩展对象;
第二获取模块402,用于获取所述扩展对象对应的对象关系映射ORM文件;
转换模块403,用于根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句;
存储模块404,用于调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库。
一实施例中,所述第一获取模块401获取应用程序的原对象中加入的扩展对象,包括:
从所述原对象的扩展对象域获取通过基类派生的所述扩展对象,所述扩展对象域为所述原对象中的预留容器。
一实施例中,所述第二获取模块402获取所述扩展对象对应的对象关系映射ORM文件,包括:
从扩展对象注册表中获取所述扩展对象对应的ORM文件的存储路径,所述扩展对象注册表中包括多个扩展对象分别对应的ORM文件的存储路径;
根据所述扩展对象对应的ORM文件的存储路径获取所述扩展对象对应ORM文件。
一实施例中,所述扩展对象的实例数据包括所述扩展对象的属性和属性类型,所述转换模块403根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句,包括:
根据所述ORM文件将所述扩展对象的属性转换成目标字段,并将所述扩展对象的属性类型转换成目标字段类型;
根据所述扩展对象的目标字段和目标字段类型生成所述SQL语句。
一实施例中,所述存储模块404调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库,包括:
根据所述扩展对象的目标字段和目标字段类型在所述数据库内所述原对象的数据表中增加目标结构扩展字段;
调用所述SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至所述原对象的数据表中增加的所述目标结构扩展字段内。
一实施例中,所述存储模块404调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库,包括:
根据所述扩展对象的目标字段和目标字段类型在所述数据库中新建数据表;
调用所述SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至新建的数据表内。
一实施例中,所述存储模块404调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库,包括:
在所述数据库内所述原对象的数据表中增加非结构化扩展字段;
调用所述SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至所述原对象的数据表中增加的所述非结构化扩展字段内。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例的装置,在扩展实体对象时,可以将扩展对象加入到应用程序的原对象中,通过获取扩展对象对应的对象关系映射ORM文件,根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句,调用SQL执行器执行该SQL语句,从而将扩展对象持久化存储至数据库,实现实体对象的扩展。本发明实施例提供的实体对象扩展方法可通过设计的实体扩展框架实现,即本发明实施例可以通过实体对象扩展框架将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而将扩展对象存入数据库实现实体对象的扩展,整个扩展不需要应用程序事先感知,因而不需要改变程序代码,实现了在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
另外,可以根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段(即扩展原表)以存储扩展对象,或者根据扩展对象的目标字段和目标字段类型在数据库中新建数据表(即新建数据表)以存储扩展对象,或者直接在扩展实体对象时,在数据库内原对象的数据表中增加非结构化扩展字段(即扩展原表)以存储扩展对象;即通过在需要的时候采用在数据库中扩展原表或新建数据表的方式存储扩展对象,可以不用在数据库中预留用于对象扩展的字段,避免事先预留字段进行实体对象扩展导致的各种问题。
本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例提供的实体对象扩展方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例提供的实体对象扩展方法。
下面参考图6,其示出了适于用来实现本发明实施例的电子设备的计算机系统500的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块和/或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块和/或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一获取模块、第二获取模块、转换模块和存储模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取应用程序的原对象中加入的扩展对象;获取所述扩展对象对应的对象关系映射ORM文件;根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句;调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库。
根据本发明实施例的技术方案,在扩展实体对象时,可以将扩展对象加入到应用程序的原对象中,通过获取扩展对象对应的对象关系映射ORM文件,根据ORM文件将扩展对象的实例数据转换成结构化查询语言SQL语句,调用SQL执行器执行该SQL语句,从而将扩展对象持久化存储至数据库,实现实体对象的扩展。本发明实施例提供的实体对象扩展方法可通过设计的实体扩展框架实现,即本发明实施例可以通过实体对象扩展框架将逻辑模型形式的扩展对象映射成能够存入数据库的物理模型,从而将扩展对象存入数据库实现实体对象的扩展,整个扩展不需要应用程序事先感知,因而不需要改变程序代码,实现了在不改变程序代码的情况进行实体对象的扩展,减少了开发成本。
另外,可以根据扩展对象的目标字段和目标字段类型在数据库内原对象的数据表中增加目标结构扩展字段(即扩展原表)以存储扩展对象,或者根据扩展对象的目标字段和目标字段类型在数据库中新建数据表(即新建数据表)以存储扩展对象,或者直接在扩展实体对象时,在数据库内原对象的数据表中增加非结构化扩展字段(即扩展原表)以存储扩展对象;即通过在需要的时候采用在数据库中扩展原表或新建数据表的方式存储扩展对象,可以不用在数据库中预留用于对象扩展的字段,避免事先预留字段进行实体对象扩展导致的各种问题。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种实体对象扩展方法,其特征在于,包括:
获取应用程序的原对象中加入的扩展对象;
获取所述扩展对象对应的对象关系映射ORM文件;
根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句;
调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库。
2.根据权利要求1所述的实体对象扩展方法,其特征在于,所述获取应用程序的原对象中加入的扩展对象,包括:
从所述原对象的扩展对象域获取通过基类派生的所述扩展对象,所述扩展对象域为所述原对象中的预留容器。
3.根据权利要求1所述的实体对象扩展方法,其特征在于,所述获取所述扩展对象对应的对象关系映射ORM文件,包括:
从扩展对象注册表中获取所述扩展对象对应的ORM文件的存储路径,所述扩展对象注册表中包括多个扩展对象分别对应的ORM文件的存储路径;
根据所述扩展对象对应的ORM文件的存储路径获取所述扩展对象对应ORM文件。
4.根据权利要求1所述的实体对象扩展方法,其特征在于,所述扩展对象的实例数据包括所述扩展对象的属性和属性类型,所述根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句,包括:
根据所述ORM文件将所述扩展对象的属性转换成目标字段,并将所述扩展对象的属性类型转换成目标字段类型;
根据所述扩展对象的目标字段和目标字段类型生成所述SQL语句。
5.根据权利要求4所述的实体对象扩展方法,其特征在于,所述调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库,包括:
根据所述扩展对象的目标字段和目标字段类型在所述数据库内所述原对象的数据表中增加目标结构扩展字段;
调用所述SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至所述原对象的数据表中增加的所述目标结构扩展字段内。
6.根据权利要求4所述的实体对象扩展方法,其特征在于,所述调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库,包括:
根据所述扩展对象的目标字段和目标字段类型在所述数据库中新建数据表;
调用所述SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至新建的所述数据表内。
7.根据权利要求1所述的实体对象扩展方法,其特征在于,所述调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库,包括:
在所述数据库内所述原对象的数据表中增加非结构化扩展字段;
调用所述SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至所述原对象的数据表中增加的所述非结构化扩展字段内。
8.一种实体对象扩展装置,其特征在于,包括:
第一获取模块,用于获取应用程序的原对象中加入的扩展对象;
第二获取模块,用于获取所述扩展对象对应的对象关系映射ORM文件;
转换模块,用于根据所述ORM文件将所述扩展对象的实例数据转换成结构化查询语言SQL语句;
存储模块,用于调用SQL执行器执行所述SQL语句,以将所述扩展对象持久化存储至数据库。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一所述的实体对象扩展方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一所述的实体对象扩展方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110938822.4A CN113656433B (zh) | 2021-08-16 | 2021-08-16 | 实体对象扩展方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110938822.4A CN113656433B (zh) | 2021-08-16 | 2021-08-16 | 实体对象扩展方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656433A true CN113656433A (zh) | 2021-11-16 |
CN113656433B CN113656433B (zh) | 2023-09-05 |
Family
ID=78491161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110938822.4A Active CN113656433B (zh) | 2021-08-16 | 2021-08-16 | 实体对象扩展方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656433B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114764326A (zh) * | 2022-03-30 | 2022-07-19 | 中国石油天然气集团有限公司 | 一种一体化软件的数据层扩展方法和系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339559A (zh) * | 2008-07-18 | 2009-01-07 | 北京航空航天大学 | 一种数据持久化实现方法 |
US20090259683A1 (en) * | 2008-04-14 | 2009-10-15 | Fiberlink Communications Corporation | System and method for business object modeling |
CN103699620A (zh) * | 2013-12-19 | 2014-04-02 | 珠海世纪鼎利通信科技股份有限公司 | 面向对象中利用orm框架实现数据库操作的方法及系统 |
CN103955370A (zh) * | 2014-04-28 | 2014-07-30 | 华为软件技术有限公司 | 一种领域对象模型的持久化装置和方法 |
CN104346466A (zh) * | 2014-11-12 | 2015-02-11 | 中国建设银行股份有限公司 | 数据库中添加新属性数据的方法和装置 |
CN107273425A (zh) * | 2017-05-18 | 2017-10-20 | 武汉普利商用机器有限公司 | 一种基于orm框架的数据库开发方法及装置 |
CN108984541A (zh) * | 2017-05-31 | 2018-12-11 | 陈瑞 | 一种基于对象数据模型的对象关系映射方法及装置 |
CN109359128A (zh) * | 2018-10-19 | 2019-02-19 | 武汉随意云科技有限公司 | 在对象系统与关系系统之间实现映射的方法 |
CN109634590A (zh) * | 2018-12-28 | 2019-04-16 | 北京神舟航天软件技术有限公司 | 一种基于业务建模的对象查询方法 |
WO2020232569A1 (zh) * | 2019-05-17 | 2020-11-26 | 环球雅途集团有限公司 | 一种数据库操作层表示方法及装置 |
CN112905624A (zh) * | 2021-02-26 | 2021-06-04 | 浪潮通用软件有限公司 | 一种低代码开发平台的数据库扩展方法及设备 |
-
2021
- 2021-08-16 CN CN202110938822.4A patent/CN113656433B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090259683A1 (en) * | 2008-04-14 | 2009-10-15 | Fiberlink Communications Corporation | System and method for business object modeling |
CN101339559A (zh) * | 2008-07-18 | 2009-01-07 | 北京航空航天大学 | 一种数据持久化实现方法 |
CN103699620A (zh) * | 2013-12-19 | 2014-04-02 | 珠海世纪鼎利通信科技股份有限公司 | 面向对象中利用orm框架实现数据库操作的方法及系统 |
CN103955370A (zh) * | 2014-04-28 | 2014-07-30 | 华为软件技术有限公司 | 一种领域对象模型的持久化装置和方法 |
CN104346466A (zh) * | 2014-11-12 | 2015-02-11 | 中国建设银行股份有限公司 | 数据库中添加新属性数据的方法和装置 |
CN107273425A (zh) * | 2017-05-18 | 2017-10-20 | 武汉普利商用机器有限公司 | 一种基于orm框架的数据库开发方法及装置 |
CN108984541A (zh) * | 2017-05-31 | 2018-12-11 | 陈瑞 | 一种基于对象数据模型的对象关系映射方法及装置 |
CN109359128A (zh) * | 2018-10-19 | 2019-02-19 | 武汉随意云科技有限公司 | 在对象系统与关系系统之间实现映射的方法 |
CN109634590A (zh) * | 2018-12-28 | 2019-04-16 | 北京神舟航天软件技术有限公司 | 一种基于业务建模的对象查询方法 |
WO2020232569A1 (zh) * | 2019-05-17 | 2020-11-26 | 环球雅途集团有限公司 | 一种数据库操作层表示方法及装置 |
CN112905624A (zh) * | 2021-02-26 | 2021-06-04 | 浪潮通用软件有限公司 | 一种低代码开发平台的数据库扩展方法及设备 |
Non-Patent Citations (1)
Title |
---|
温皓晴;靳晓松;: "轻量级ORM数据访问框架SqlBuilder.NET的设计与实现", 计算机与网络, no. 03 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114764326A (zh) * | 2022-03-30 | 2022-07-19 | 中国石油天然气集团有限公司 | 一种一体化软件的数据层扩展方法和系统 |
CN114764326B (zh) * | 2022-03-30 | 2023-09-19 | 中国石油天然气集团有限公司 | 一种一体化软件的数据层扩展方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113656433B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840429B (zh) | 智能合约部署、调用方法和装置 | |
US10067957B1 (en) | Process for serializing and deserializing data described by a schema | |
CN107256206B (zh) | 字符流格式转换的方法和装置 | |
US7831982B2 (en) | Service aggregation in a service oriented architecture | |
CN110647316B (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
US9619537B2 (en) | Converting data objects from single- to multi-source database environment | |
CN108279882B (zh) | 框架生成方法、装置、设备及计算机可读介质 | |
US9971794B2 (en) | Converting data objects from multi- to single-source database environment | |
CN113641700A (zh) | 一种基于Spring boot框架的数据处理方法及装置 | |
CN111611441B (zh) | 异构数据的处理方法、装置以及计算机设备 | |
CN111125064B (zh) | 一种生成数据库模式定义语句的方法和装置 | |
CN110941655B (zh) | 一种数据格式转换方法及装置 | |
CN110109983B (zh) | 一种操作Redis数据库的方法和装置 | |
CN113656433B (zh) | 实体对象扩展方法、装置、电子设备和存储介质 | |
CN114579109A (zh) | 代码生成方法及装置、电子设备和存储介质 | |
CN113760948A (zh) | 一种数据查询的方法及装置 | |
US11016830B2 (en) | Entity-based service operation for object-based persistence | |
CN116450238A (zh) | Vue界面渲染方法、装置、存储介质及电子设备 | |
CN114721711B (zh) | 基于GraphQL减免软件研发配置的工具和方法 | |
CN113760961A (zh) | 数据查询方法和装置 | |
US20220284371A1 (en) | Method, device and medium for a business function page | |
CN112347794B (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
CN114661402A (zh) | 一种界面渲染方法、装置、电子设备及计算机可读介质 | |
CN114282895A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US7567971B2 (en) | Generic symbol referencing mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |