CN115686459B - 基于Java语言的模型生成方法、装置、设备及可读存储介质 - Google Patents
基于Java语言的模型生成方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN115686459B CN115686459B CN202211349794.3A CN202211349794A CN115686459B CN 115686459 B CN115686459 B CN 115686459B CN 202211349794 A CN202211349794 A CN 202211349794A CN 115686459 B CN115686459 B CN 115686459B
- Authority
- CN
- China
- Prior art keywords
- model
- attribute
- class
- generated
- target
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及物联网技术领域,公开了一种基于Java语言的模型生成方法、装置、设备及可读存储介质。其中,该方法包括:获取待生成模型的属性信息以及对应于属性信息的Java类模板,该属性信息包括类属性和对象属性;基于Java类模板对类属性进行编译,生成对应于待生成模型的类文件;基于对象属性加载对应于类文件的目标对象;基于对象属性对目标对象进行赋值,生成对象实例,得到对应于对象实例的目标模型。通过实施本发明,基于Java的语言特性实现了模型之间的继承,方便了模型之间的组合,最大程度上降低了模型之间的关联难度,且模型之间的组合、继承关系的实现由Java语言本身完成,有利于后续的维护和面向对象的开发。
Description
技术领域
本发明涉及物联网技术领域,具体涉及一种基于Java语言的模型生成方法、装置、设备及可读存储介质。
背景技术
物联网(Internet of Things,IOT)是新一代信息技术的重要组成部分,可实现人、机、物之间信息共享,将信息世界与物理世界形成了更加紧密的信息流动系统。
在物联网平台中,模型的管理可以方便的复用已有的模型配置,快捷的批量创建、管理物理设备实例。但是,在现有的模型管理实现中,各个模型之间的组合关系、继承关系是通过关系数据库中的数据关联所实现的。尽管该方式能够实现模型的组合、继承关系,但各模型之间的关联关系较为复杂,大大增加了后续代码实现的难度以及维护的难度。
发明内容
有鉴于此,本发明实施例提供了一种基于Java语言的模型生成方法、装置、设备及可读存储介质,以解决各个模型之间关联难度较大的问题。
根据第一方面,本发明实施例提供了一种基于Java语言的模型生成方法,包括:获取待生成模型的属性信息以及对应于所述属性信息的Java类模板,所述属性信息包括类属性和对象属性;基于所述Java类模板对所述类属性进行编译,生成对应于所述待生成模型的类文件;基于所述对象属性加载对应于所述类文件的目标对象;基于所述对象属性对所述目标对象进行赋值,生成对象实例,得到对应于所述对象实例的目标模型。
本发明实施例提供的基于Java语言的模型生成方法,通过Java类模板生成类文件,由于生成类文件的过程并不会进行属性赋值,继而通过加载目标对象以实现对于目标对象的属性赋值,得到相应的对象实例,从而得到相应的目标模型。该目标模型及其属性信息被抽象为Java类,并按照Java面向对象的语言特性生成,由此在基于该目标模型进行其他子模型的派生时,派生出的子模型在具有其自身属性的同时,能够直接继承来自目标模型的属性,实现了模型之间的继承,方便了模型之间的组合,最大程度上降低了模型之间的关联难度。且模型之间的组合、继承关系的实现由Java语言本身完成,有利于后续的维护和面向对象的开发。
结合第一方面,在第一方面的第一实施方式中,获取待生成模型的属性信息,包括:获取所述待生成模型对应的关系数据库;从所述关系数据库中读取所述待生成模型的属性信息。
本发明实施例提供的基于Java语言的模型生成方法,待生成模型的属性信息预先存储在相应的关系数据库,通过访问关系数据库以确定出属性信息,便于根据属性信息进行后续类文件的生成。
结合第一方面或第一方面第一实施方式,在第一方面的第二实施方式中,获取对应于所述属性信息的Java类模板,包括:获取预设模板文件,所述预设模板文件基于模板引擎生成;将所述类属性通过参数方式传递至所述预设模板文件,生成字符串的Java类模板。
本发明实施例提供的基于Java语言的模型生成方法,从所述属性信息中提取待生成模型的类属性,将该类属性传递至预设模板文件中即可生成相应的Java类模板,代码实现更加简单,易于后续维护。
结合第一方面,在第一方面的第三实施方式中,所述基于所述对象属性加载对应于所述类文件的目标对象,包括:分析所述待生成模型对应的对象属性,确定所述待生成模型的目标对象;将所述目标对象加载至预设内存空间。
结合第一方面第三实施方式,在第一方面的第四实施方式中,所述基于所述对象属性对所述目标对象进行赋值,生成对象实例,得到对应于所述对象实例的目标模型,包括:将所述类文件加载到所述预设内存空间;从所述类文件中提取出待赋值的目标对象,基于所述对象属性对所述待赋值的目标对象进行赋值处理,创建针对于所述待生成模型的对象实例;将所述对象实例封装为所述目标模型。
本发明实施例提供的基于Java语言的模型生成方法,通过加载目标对象以创建对象实例以生成目标模型,使得代码实现逻辑更加容易理解,降低了代码实现的复杂度,同时,通过对象实例体现出各个模型之间的关联层次关系,更加便于模型的统一管理。
结合第一方面第四实施方式,在第一方面的第五实施方式中,所述方法还包括:响应于对所述目标模型的属性更改操作,确定所述属性更改操作对应的属性更改信息;将所述属性更改信息更新至对应于所述目标模型的所述对象实例中。
本发明实施例提供的基于Java语言的模型生成方法,支持目标模型的属性更改,且能够将属性更改信息同步至各个对象实例中,方便了对于目标模型的管理,降低了数据的冗余度,增强了目标模型的的易维护性以及复用性。
结合第一方面,在第一方面的第六实施方式中,所述方法还包括:生成所述目标模型的唯一性标识;当操作所述目标模型时,基于所述唯一性标识查询所述目标模型。
本发明实施例提供的基于Java语言的模型生成方法,通过为目标模型生成相应的唯一性标识,便于后续对于目标模型的操作,提高了模型的查询效率,提高了对于目标模型的操作效率。
根据第二方面,本发明实施例提供了一种基于Java语言的模型生成装置,包括:获取模块,用于获取待生成模型的属性信息以及对应于所述属性信息的Java类模板,所述属性信息包括类属性和对象属性;编译模块,用于基于所述Java类模板对所述类属性进行编译,生成对应于所述待生成模型的类文件;加载模块,用于基于所述对象属性加载对应于所述类文件的目标对象;生成模块,用于基于所述对象属性对所述目标对象进行赋值,生成对象实例,得到对应于所述对象实例的目标模型。
根据第三方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或第一方面任一实施方式所述的基于Java语言的模型生成方法。
根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行第一方面或第一方面任一实施方式所述的基于Java语言的模型生成方法。
需要说明的是,本发明实施例提供的基于Java语言的模型生成装置、电子设备以及计算机可读存储介质的相应有益效果,请参见基于Java语言的模型生成方法中相应内容的描述,在此不再赘述。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的基于Java语言的模型生成方法的流程图;
图2是根据本发明实施例的基于Java语言的模型生成方法的另一流程图;
图3是根据本发明实施例的基于Java语言的模型生成方法的又一流程图;
图4示出了本发明实施例中模型的派生关系、组合关系示意图;
图5是根据本发明实施例的基于Java语言的模型生成装置的结构框图;
图6是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在物联网平台中,模型的管理可以方便的复用已有的模型配置,快捷的批量创建、管理物理设备实例。但是,在现有的模型管理实现中,各个模型之间的组合关系、继承关系是通过关系数据库中的数据关联所实现的。尽管该方式能够实现模型的组合、继承关系,但各模型之间的关联关系较为复杂,大大增加了后续代码实现的难度以及维护的难度。
基于此,本申请技术方案借助于Java面向对象的语言特性,实现模型之间组合以及继承关系,这种实现方式将组合、继承依赖于语言的特性及规则,降低了模型之间的关联难度,且更有利于维护和面向对象开发。
根据本发明实施例,提供了一种基于Java语言的模型生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种基于Java语言的模型生成方法,可用于电子设备,如手机、平板电脑、电脑、服务器等,图1是根据本发明实施例的基于Java语言的模型生成方法的流程图,如图1所示,该流程包括如下步骤:
S11,获取待生成模型的属性信息以及对应于属性信息的Java类模板,该属性信息包括类属性和对象属性。
待生成模型为基于物联网的项目模型、设备模型等,该待生成模型可以为构成项目系统的基础模型,也可以是从已有模型中派生出的子模型,此处对于待生成模型的类型不作具体限定。
属性信息用于表征待生成模型所具有的特性,包括类属性和对象属性。其中,类属性包括报警信息、历史数据、调用方法、测点以及扩展属性等;对象属性表示类属性中所存在待赋值的属性。
Java类模板是根据属性信息中的类属性所生成的模板,通过Java类模板将待生成模型及其属性信息抽取为Java类,并抽取所有类的基类为Base。由此待生成模型的基础类为BaseModel,BaseModel则属于Base类的子类。
S12,基于Java类模板对类属性进行编译,生成对应于待生成模型的类文件。
在启动模型生成程序且已经获取到对应于待生成模型的属性信息之后,从属性信息中提取出类属性,由Java类模板对类属性进行编译,以将属性信息抽取为Java类,得到相应的类文件。
具体地,基于Java类模板调用JavaCompiler.CompilationTask对模板中类属性进行编译,生成相应的类文件,并将类文件存储到指定的文件路径下。
S13,基于对象属性加载对应于类文件的目标对象。
目标对象为需要类文件中所存在的需要赋值的属性,由于类文件为Java class类型信息,在编译生成类文件的过程中是不会给属性赋值的,此时可以基于对象属性确定出需要赋值的一个或多个属性,并调用Java的加载器ClassLoader对类文件进行加载,得到类文件所对应的目标对象。
S14,基于对象属性对目标对象进行赋值,生成对象实例,得到对应于对象实例的目标模型。
根据对象属性将需要赋值的目标对象放至map中,调用实例生成方法,在生成对象实例的同时对需要赋值的目标对象进行赋值。继而,调用相应的Java封装方法将对象实例封装为目标模型即可。
本实施例提供的基于Java语言的模型生成方法,通过Java类模板生成类文件,由于生成类文件的过程并不会进行属性赋值,继而通过加载目标对象以实现对于目标对象的属性赋值,得到相应的对象实例,从而得到相应的目标模型。该目标模型及其属性信息被抽象为Java类,并按照Java面向对象的语言特性生成,由此在基于该目标模型进行其他子模型的派生时,派生出的子模型在具有其自身属性的同时,能够直接继承来自目标模型的属性,实现了模型之间的继承,方便了模型之间的组合,最大程度上降低了模型之间的关联难度。且模型之间的组合、继承关系的实现由Java语言本身完成,有利于后续的维护和面向对象的开发。
在本实施例中提供了一种基于Java语言的模型生成方法,可用于电子设备,如手机、平板电脑、电脑、服务器等,图2是根据本发明实施例的基于Java语言的模型生成方法的流程图,如图2所示,该流程包括如下步骤:
S21,获取待生成模型的属性信息以及对应于属性信息的Java类模板,该属性信息包括类属性和对象属性。
具体地,上述步骤S21可以包括:
S211,获取待生成模型对应的关系数据库。
关系数据库是建立在关系数据库模型基础上的数据库,通过关系数据库存储待生成模型与其他已有模型之间的关联关系,即由关系数据库描述当前待生成模型与已有模型之间的关联关系。具体地,该关系数据库可以采用oracle、db2、sqlserver、sybase、mysql等,此处对于关系数据库不作限定,只要能够实现对于待生成模型的相关信息的存储即可。
具体地,对于待生成模型的相关信息而言,其存储位置可以预先记录或配置在电子设备中,当执行模型生成的Java程序时,电子设备则可以通过存储位置确定出待生成模型对应的关系数据库。
S212,从关系数据库中读取待生成模型的属性信息。
不同的待生成模型具有相应的属性信息,即属性信息与待生成模型之间是一一对应的,例如通过待生成模型的名称name构成待生成模型及其属性信息的索引关系。在确定出待生成模型所处的关系数据中,根据属性信息与待生成模型之间的对应关系,即可确定出相应的属性信息。
需要说明的是,若当前的待生成模型是从已有模型中派生出来的,则该属性信息中不仅包括待生成模型的自身属性,还包括其父类模型的属性信息。
S213,获取预设模板文件,该预设模板文件基于模板引擎生成。
预设模板文件为根据Java语言,通过模板引擎所预先开发生成的模板文件。在该模板文件中设置有参数部分,以便根据传入的参数进行编译。以模板引擎Freemarker为例,预设模板文件为预制好的Freemarker模版文件,其中的“${}”(例如,${method!""})包含部分即为模板文件的参数部分。
S214,将类属性通过参数方式传递至预设模板文件,生成字符串的Java类模板。
将读取到的类属性以及拼接好的针对于待生成模型的包名信息通过参数方式传入预设模板文件中,借助org.springframework.ui.freemarker包中的模板引擎SpringTemplateLoader生成字符串的Java类模版。
S22,基于Java类模板对类属性进行编译,生成对应于待生成模型的类文件。详细说明参见上述实施例对应的相关描述,此处不再赘述。
S23,基于对象属性加载对应于类文件的目标对象。详细说明参见上述实施例对应的相关描述,此处不再赘述。
S24,基于对象属性对目标对象进行赋值,生成对象实例,得到对应于对象实例的目标模型。详细说明参见上述实施例对应的相关描述,此处不再赘述。
S25,生成目标模型的唯一性标识。
唯一性标识用于表征模板模型的唯一性,即通过该唯一性标识仅能确定出一个与之对应的模型。在生成对象实例后,可以将该对象实例存储至map中,并生成该对象实例所对应的目标模型的唯一性标识。例如,每个模型所对应的模型长名是不同,可以采用模型长名作为唯一性标识。
S26,当操作目标模型时,基于唯一性标识查询目标模型。
对于目标模型的操作可以包括属性更新、属性删除、属性新增等,当然还可以包括其他操作,此处不作具体限定。当需要对目标模型进行操作时,则可以基于该目标模型的唯一性标识查询目标模型,继而确定出相应的对象实例,以对该对象实例进行相应的操作。
本实施例提供的基于Java语言的模型生成方法,待生成模型的属性信息预先存储在相应的关系数据库,通过访问关系数据库以确定出属性信息,便于根据属性信息进行后续类文件的生成。从所述属性信息中提取待生成模型的类属性,将该类属性传递至预设模板文件中即可生成相应的Java类模板,代码实现更加简单,易于后续维护。通过生成目标模型的唯一性标识,便于后续对于目标模型的操作,提高了模型的查询效率,提高了对于目标模型的操作效率。
在本实施例中提供了一种基于Java语言的模型生成方法,可用于电子设备,如手机、平板电脑、电脑、服务器等,图3是根据本发明实施例的基于Java语言的模型生成方法的流程图,如图3所示,该流程包括如下步骤:
S31,获取待生成模型的属性信息以及对应于属性信息的Java类模板,该属性信息包括类属性和对象属性。详细说明参见上述实施例对应的相关描述,此处不再赘述。
S32,基于Java类模板对类属性进行编译,生成对应于待生成模型的类文件。详细说明参见上述实施例对应的相关描述,此处不再赘述。
S33,基于对象属性加载对应于类文件的目标对象。
具体地,上述步骤S33可以包括:
S331,分析待生成模型对应的对象属性,确定待生成模型的目标对象。
对象属性中记录了需要赋值的属性,待赋值的属性即为待生成模型的目标对象。具体地,生成类文件之后,为了实现对于类文件中的属性赋值,可以通过分析待生成模型的对象属性以确定出需要赋值的属性。
S332,将目标对象加载至预设内存空间。
预设内存空间为预先设置的用于存储目标对象的内存空间,对于Java开发而言,此处可以设置该预设内存空间为虚拟处理器jvm。该虚拟处理器jvm是设置在Java编译器和OS平台之间的虚拟处理器,用于执行字节码程序。
由于Java类难以进行目标对象的存储,在确定出目标对象之后可以调用类加载器将目标对象加载至虚拟处理器jvm。
S34,基于对象属性对目标对象进行赋值,生成对象实例,得到对应于对象实例的目标模型。
具体地,上述步骤S34可以包括:
S341,将类文件加载到预设内存空间。
类文件所处的预设内存空间与目标对象所处的预设内存空间一致,即类文件及其相对应的目标对象的加载位置相同。此处设置预设内存空间为虚拟处理器jvm。对于预设内存空间的详细说明参见上述内容所述,此处不再赘述。
由于类文件只是Java class类型信息,生成类文件的过程不会给属性赋值,为了实现属性赋值,在生成类文件之后,使用Java的类加载器ClassLoader将类文件加载到虚拟处理器jvm。
S342,从类文件中提取出待赋值的目标对象,基于对象属性对待赋值的目标对象进行赋值处理,创建针对于待生成模型的对象实例。
通过加载到虚拟处理器jvm的目标对象以从类文件中提取出待赋值属性,将待赋值属性放到map中,调用hutool工具包下的BeanUtil.toBean(map,Class<T>clazz)方法,在创建出对象实例的同时给目标对象进行属性赋值。
作为一个可选的实施方式,当需要更改对象实例时,还可以包括:
(1)响应于对目标模型的属性更改操作,确定属性更改操作对应的属性更改信息。
属性更改操作包括属性名、属性值的增加、修改、删除以及查询等操作。技术人员可以通过目标模型的唯一性标识到该目标模型的对象实例,继而通过Java的反射model.getClass().getFields()获取到针对于目标模型的对象实例的属性名和属性值,对其值进行更新、查询等操作。
属性更改操作还可以包括方法的更新以及查询等操作。对于方法的调用,同样可以通过反射model.getClass().getDeclareMethod(String name,Class<?>…parameterTypes)获取到方法,然后invoke来调用该方法。
相应地,电子设备可以响应技术人员对于目标模型的属性更改操作,并根据该属性更改操作确定出相应的属性更改信息。
(2)将属性更改信息更新至对应于目标模型的对象实例中。
将属性更改信息自动同步到所有基于创建该目标模型所生成的对象实例上。具体地,若在目标模型上新增属性或方法,而不想影响已经创建出的对象实例,此时可以基于该目标模型派生(继承)出一个子模型,基于Java的继承原理,派生得到的子模型拥有其自身属性的同时,也可访问父类的非私有的属性和方法。父类的属性或方法的新增及修改,也会同步到子类创建的对象实例上。
通过将目标模型的属性更改信息同步至各个对象实例中,方便了对于目标模型的管理,降低了数据的冗余度,增强了目标模型的易维护性以及复用性。
S343,将对象实例封装为目标模型。
在完成对象实例的创建后,通过Java语言将该对象实例封装为目标模型,至此,目标模型则可以实现与对象实例相对应的功能。
以图4所示的类图举例说明模型之间的派生以及组合的关系,其中,工厂模型GongChang、电柜模型DianGui、电表模型DianBiao派生自基础模型BaseModel。直流电表DCDianBiao、交流电表ACDianBiao派生自电表模型DianBiao,北京工厂模型BeijingGongChang派生自工厂模型GongChang,这些派生得到的模型为继承父类模型的派生模型或子模型。
每个模型的对象实例都可以作为另一种模型的属性组合至另一种模型下,例如图4中的工厂模型GongChang,可以把电柜模型DianGui的对象实例dg1组合到该工厂模型GongChang;图4中的电表模型DianBiao下也组合了两个测点Tag的对象实例tag1和tag2。
每个派生出的子模型同时的拥有自身属性和继承自父类的非私有属性,其中,子模型所拥有的自身属性为根据实际需求自定义的。例如北京工厂模型BeijingGongChang不仅包含有webSit属性以及电柜模型DianGui类型的dg2属性这2个自身属性,也能够拥有来自于父类的name、address以及dg1属性(图4中仅示出了自身属性)这3个非私有属性。
工厂模型GongChang中产生属性新增、属性修改或属性删除后,也可以同步到它的子类模型下。
如此,经过不同类型项目的积累,可以逐步扩大标准模型库,在部署新项目时,可以复用已经存在的模型,大大降低项目模型的构建难度。
本实施例提供的基于Java语言的模型生成方法,通过加载目标对象以创建对象实例以生成目标模型,使得代码实现逻辑更加容易理解,降低了代码实现的复杂度,同时,通过对象实例体现出各个模型之间的关联层次关系,更加便于模型的统一管理。
在本实施例中还提供了一种基于Java语言的模型生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种基于Java语言的模型生成装置,如图5所示,包括:
获取模块41,用于获取待生成模型的属性信息以及对应于属性信息的Java类模板,该属性信息包括类属性和对象属性。
编译模块42,用于基于Java类模板对类属性进行编译,生成对应于待生成模型的类文件。
加载模块43,用于基于对象属性加载对应于类文件的目标对象。
生成模块44,用于基于对象属性对目标对象进行赋值,生成对象实例,得到对应于对象实例的目标模型。
可选地,上述获取模块41可以包括:
第一获取子模块,用于获取待生成模型对应的关系数据库。
读取子模块,用于从关系数据库中读取待生成模型的属性信息。
第二获取子模块,用于获取预设模板文件,该预设模板文件基于模板引擎生成。
生成子模块,用于将类属性通过参数方式传递至预设模板文件,生成字符串的Java类模板。
可选地,上述加载模块43可以包括:
分析子模块,用于分析待生成模型对应的对象属性,确定待生成模型的目标对象。
第一加载子模块,用于将目标对象加载至预设内存空间。
可选地,上述生成模块44可以包括:
第二加载子模块,用于将类文件加载到预设内存空间。
提取子模块,用于从类文件中提取出待赋值的目标对象,基于对象属性对待赋值的目标对象进行赋值处理,创建针对于待生成模型的对象实例。
封装子模块,用于将对象实例封装为目标模型。
可选地,上述生成模块44具体还可以用于:响应于对目标模型的属性更改操作,确定属性更改操作对应的属性更改信息;将属性更改信息更新至对应于目标模型的对象实例中。
具体地,上述基于Java语言的模型生成装置可以包括:
标识生成模块,用于生成目标模型的唯一性标识。
查询模块,用于当操作目标模型时,基于唯一性标识查询目标模型。
本实施例中的基于Java语言的模型生成装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例提供的基于Java语言的模型生成装置,通过Java类模板生成类文件,由于生成类文件的过程并不会进行属性赋值,继而通过加载目标对象以实现对于目标对象的属性赋值,得到相应的对象实例,从而得到相应的目标模型。该目标模型及其属性信息被抽象为Java类,并按照Java面向对象的语言特性生成,由此在基于该目标模型进行其他子模型的派生时,派生出的子模型在具有其自身属性的同时,能够直接继承来自目标模型的属性,实现了模型之间的继承,方便了模型之间的组合,最大程度上降低了模型之间的关联难度。且模型之间的组合、继承关系的实现由Java语言本身完成,有利于后续的维护和面向对象的开发。
本发明实施例还提供一种电子设备,具有上述图5所示的基于Java语言的模型生成装置。
请参阅图6,图6是本发明可选实施例提供的一种电子设备的结构示意图,如图6所示,该电子设备可以包括:至少一个处理器501,例如中央处理器(Central ProcessingUnit,CPU),至少一个通信接口503,存储器504,至少一个通信总线502。其中,通信总线502用于实现这些组件之间的连接通信。其中,通信接口503可以包括显示屏(Display)、键盘(Keyboard),可选通信接口503还可以包括标准的有线接口、无线接口。存储器504可以是高速易挥发性随机存取存储器(Random Access Memory,RAM),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器504可选的还可以是至少一个位于远离前述处理器501的存储装置。其中处理器501可以结合图5所描述的装置,存储器504中存储应用程序,且处理器501调用存储器504中存储的程序代码,以用于执行上述任一方法步骤。
其中,通信总线502可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。通信总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器504可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器504还可以包括上述种类的存储器的组合。
其中,处理器501可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
其中,处理器501还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选地,存储器504还用于存储程序指令。处理器501可以调用程序指令,实现如本申请上述实施例中所示的基于Java语言的模型生成方法。
本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于Java语言的模型生成方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (8)
1.一种基于Java语言的模型生成方法,其特征在于,包括:
获取待生成模型的属性信息以及对应于所述属性信息的Java类模板,所述属性信息包括类属性和对象属性;
基于所述Java类模板对所述类属性进行编译,生成对应于所述待生成模型的类文件;
基于所述对象属性加载对应于所述类文件的目标对象;
基于所述对象属性对所述目标对象进行赋值,生成对象实例,得到对应于所述对象实例的目标模型;
其中,获取待生成模型的属性信息,包括:获取所述待生成模型对应的关系数据库,所述关系数据库用于存储所述待生成模型与已有模型之间的关联关系;从所述关系数据库中读取所述待生成模型的属性信息;若当前的待生成模型是从已有模型中派生出来的,则所述属性信息中不仅包括待生成模型的自身属性,还包括其父类模型的属性信息;
当需要更改所述对象实例时,所述方法还包括:响应于对所述目标模型的属性更改操作,确定所述属性更改操作对应的属性更改信息;将所述属性更改信息更新至对应于所述目标模型的所述对象实例中;其中,所述属性更改信息自动同步到所有基于创建所述目标模型所生成的所述对象实例上,父类的属性或方法的新增及修改,也会同步到子类创建的对象实例上。
2.根据权利要求1所述的方法,其特征在于,获取对应于所述属性信息的Java类模板,包括:
获取预设模板文件,所述预设模板文件基于模板引擎生成;
将所述类属性通过参数方式传递至所述预设模板文件,生成字符串的Java类模板。
3.根据权利要求1所述的方法,其特征在于,所述基于所述对象属性加载对应于所述类文件的目标对象,包括:
分析所述待生成模型对应的对象属性,确定所述待生成模型的目标对象;
将所述目标对象加载至预设内存空间。
4.根据权利要求3所述的方法,其特征在于,所述基于所述对象属性对所述目标对象进行赋值,生成对象实例,得到对应于所述对象实例的目标模型,包括:
将所述类文件加载到所述预设内存空间;
从所述类文件中提取出待赋值的目标对象,基于所述对象属性对所述待赋值的目标对象进行赋值处理,创建针对于所述待生成模型的对象实例;
将所述对象实例封装为所述目标模型。
5.根据权利要求1所述的方法,其特征在于,还包括:
生成所述目标模型的唯一性标识;
当操作所述目标模型时,基于所述唯一性标识查询所述目标模型。
6.一种基于Java语言的模型生成装置,其特征在于,包括:
获取模块,用于获取待生成模型的属性信息以及对应于所述属性信息的Java类模板,所述属性信息包括类属性和对象属性;
编译模块,用于基于所述Java类模板对所述类属性进行编译,生成对应于所述待生成模型的类文件;
加载模块,用于基于所述对象属性加载对应于所述类文件的目标对象;
生成模块,用于基于所述对象属性对所述目标对象进行赋值,生成对象实例,得到对应于所述对象实例的目标模型;
其中,所述获取模块包括:第一获取子模块,用于获取所述待生成模型对应的关系数据库,所述关系数据库用于存储所述待生成模型与已有模型之间的关联关系;读取子模块,用于从所述关系数据库中读取所述待生成模型的属性信息;若当前的待生成模型是从已有模型中派生出来的,则所述属性信息中不仅包括待生成模型的自身属性,还包括其父类模型的属性信息;
其中,当需要更改所述对象实例时,所述生成模块,还用于响应于对所述目标模型的属性更改操作,确定所述属性更改操作对应的属性更改信息;将所述属性更改信息更新至对应于所述目标模型的所述对象实例中,其中,所述属性更改信息自动同步到所有基于创建所述目标模型所生成的所述对象实例上,父类的属性或方法的新增及修改,也会同步到子类创建的对象实例上。
7.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-5任一项所述的基于Java语言的模型生成方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行权利要求1-5任一项所述的基于Java语言的模型生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211349794.3A CN115686459B (zh) | 2022-10-31 | 2022-10-31 | 基于Java语言的模型生成方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211349794.3A CN115686459B (zh) | 2022-10-31 | 2022-10-31 | 基于Java语言的模型生成方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115686459A CN115686459A (zh) | 2023-02-03 |
CN115686459B true CN115686459B (zh) | 2023-07-25 |
Family
ID=85046020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211349794.3A Active CN115686459B (zh) | 2022-10-31 | 2022-10-31 | 基于Java语言的模型生成方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115686459B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679518A (zh) * | 2015-03-10 | 2015-06-03 | 中国联合网络通信集团有限公司 | 一种实现物联网语义建模的方法及装置 |
US10437564B1 (en) * | 2016-09-16 | 2019-10-08 | Software Tree, LLC | Object mapping and conversion system |
CN114895912A (zh) * | 2022-06-07 | 2022-08-12 | 康键信息技术(深圳)有限公司 | 编码架构下实体类对象的转换方法、装置、设备及介质 |
CN115147514A (zh) * | 2022-08-02 | 2022-10-04 | 浙江中控技术股份有限公司 | 工业流程图生成方法、装置、电子设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005141380A (ja) * | 2003-11-05 | 2005-06-02 | Matsushita Electric Ind Co Ltd | テンプレートコンパイル方法 |
US8086998B2 (en) * | 2006-04-27 | 2011-12-27 | International Business Machines Corporation | transforming meta object facility specifications into relational data definition language structures and JAVA classes |
US20150149980A1 (en) * | 2013-09-11 | 2015-05-28 | Tongling Yucheng Software Technology Co., Ltd. | Service model-oriented software operation platform and operation method thereof |
CN102270138B (zh) * | 2011-08-15 | 2014-06-11 | 青岛海信传媒网络技术有限公司 | 实体对象的创建方法和实体对象创建装置 |
CN103095823A (zh) * | 2013-01-09 | 2013-05-08 | 大唐软件技术股份有限公司 | 一种物联网系统中对象的描述方法及对象信息交互系统 |
US9465590B2 (en) * | 2014-07-07 | 2016-10-11 | Sap Se | Code generation framework for application program interface for model |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
CN110727799B (zh) * | 2018-06-29 | 2022-08-16 | 杭州海康威视数字技术股份有限公司 | 本体构建方法及装置 |
CN109408569A (zh) * | 2018-09-28 | 2019-03-01 | 平安科技(深圳)有限公司 | Json数据转换方法、装置、计算机设备及存储介质 |
CN109542405A (zh) * | 2018-11-02 | 2019-03-29 | 大唐网络有限公司 | 类的实例化方法及装置 |
CN112473143A (zh) * | 2020-11-12 | 2021-03-12 | 杭州电魂网络科技股份有限公司 | 配置游戏技能的方法、系统、电子装置和存储介质 |
CN114138244A (zh) * | 2021-12-03 | 2022-03-04 | 北京自如信息科技有限公司 | 模型类文件自动生成方法、装置、存储介质及电子设备 |
CN115048111B (zh) * | 2022-08-16 | 2022-11-15 | 深圳华锐分布式技术股份有限公司 | 基于元数据的代码生成方法、装置、设备及介质 |
-
2022
- 2022-10-31 CN CN202211349794.3A patent/CN115686459B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679518A (zh) * | 2015-03-10 | 2015-06-03 | 中国联合网络通信集团有限公司 | 一种实现物联网语义建模的方法及装置 |
US10437564B1 (en) * | 2016-09-16 | 2019-10-08 | Software Tree, LLC | Object mapping and conversion system |
CN114895912A (zh) * | 2022-06-07 | 2022-08-12 | 康键信息技术(深圳)有限公司 | 编码架构下实体类对象的转换方法、装置、设备及介质 |
CN115147514A (zh) * | 2022-08-02 | 2022-10-04 | 浙江中控技术股份有限公司 | 工业流程图生成方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115686459A (zh) | 2023-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9465590B2 (en) | Code generation framework for application program interface for model | |
CN111722839B (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN110673839B (zh) | 分布式工具配置化构建生成方法及系统 | |
CN112966004B (zh) | 数据查询方法、装置、电子设备以及计算机可读介质 | |
CN106873952B (zh) | 移动端网页开发的数据处理系统和方法、及应用装置 | |
CN112363695B (zh) | Pmml文件及其运行时环境与工业软件的集成方法 | |
CN112363694B (zh) | Fmu文件及求解器运行环境与工业软件的集成方法 | |
CN113986241B (zh) | 一种基于知识图谱的业务规则的配置方法以及装置 | |
US8615729B2 (en) | Extending existing model-to-model transformations | |
US7975247B2 (en) | Method and system for organizing data generated by electronic design automation tools | |
CN113377661A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN115509515A (zh) | 一种组件重用方法、装置、电子设备和存储介质 | |
US20120124555A1 (en) | Optimization of Compiled Control Objects | |
CN114741085A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115686459B (zh) | 基于Java语言的模型生成方法、装置、设备及可读存储介质 | |
CN115618363B (zh) | 漏洞路径的挖掘方法及相关设备 | |
CN111966704A (zh) | Orm框架实现方法、系统、计算机设备和存储介质 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN113434938B (zh) | Bim模型的检查方法、装置、计算机设备及存储介质 | |
CN114816437A (zh) | 一种逆向生成Java实体类的方法、系统和设备 | |
CN113987044A (zh) | 资产数据的导入处理方法、装置及电子设备 | |
CN114385155A (zh) | vue项目可视化工具生成方法、装置、设备及存储介质 | |
US20060130009A1 (en) | Dynamically configurable model-to-model transformation engine |
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 |