一种通用的元数据/关系映射框架的制作方法与工艺

文档序号:12200913阅读:385来源:国知局
本发明涉及电力系统数据库领域,具体为一种通用的元数据/关系映射框架。

背景技术:
自律分散的即插即用数据平台采用以三层HashMap形式表示的元数据作为统一结构来存储各种格式的电力数据。元数据虽解决了异构数据归一化的问题,但数据平台中下层模块的开发者只能通过调用HashMap所支持的get/put方法并指定Tag/Key名作为参数对元数据进行增、删、改、查等操作,这不仅使模块代码违背了面向对象设计的原则,而且降低了开发者对数据涉及具体业务的关注度。

技术实现要素:
为了克服上述现有技术的不足,本发明的目的在于提供一种通用的元数据/关系映射框架。为了达到上述目的,本发明所采用的技术方案为:一种通用的元数据/关系映射框架,其特征在于:逻辑结构如下:映射配置的定义,编辑元数据/关系映射所必要的配置信息,配置信息保存在配置文件中;实体代理类的生成,根据映射配置信息,生成与元数据中Tag对应的实体代理类的字节码;DAO类及其CRUD方法的生成,根据映射配置信息,为元数据各Tag生成对应DAO类的CRUD方法的字节码,用于以面向对象和业务相关的方式对元数据进行增、删、改、查操作;MQL语法分析,对用户提交的类SQL的MQL语句进行语法分析,并提示语法错误信息;结果集封装与迭代,执行用户提交的MQL语句,并将返回结果集封装为实体代理类对象组成的列表以方便后续的迭代操作;事务管理,对元数据进行更改的过程中,若发生任何错误则自动回滚数据,以保证元数据的数据完整性。所述的一种通用的元数据/关系映射框架,其特征在于:所述映射配置的定义过程如下:步骤1:启动映射配置定义模块,选择要操作的元数据格式;步骤2:定义元数据中的每个Tag对应的实体类名称;步骤3:定义Tag下的每个Key对应的字段名称和类型;步骤4:根据元数据采用的三层HashMap的中层Map,定义其Key值对应的组成字段,以作为后述实体类的主键字段;步骤5:分析并校验以上映射配置是否合法。所述的一种通用的元数据/关系映射框架,其特征在于:所述实体代理类的生成过程如下:步骤1:读取映射配置文件,获取实体类及其字段的信息;步骤2:根据映射配置信息,利用虚拟机字节码生成工具,生成实体类的字节码,包括字段、主键字段、各字段的setter/getter方法;步骤3:结合动态代理模式,为实体类生成代理接口;步骤4:利用虚拟机字节码生成工具,生成代理接口的实现类。所述的一种通用的元数据/关系映射框架,其特征在于:所述DAO类及其CRUD方法的生成过程如下:步骤1:根据映射配置信息,利用虚拟机字节码生成工具,为元数据各Tag生成对应DAO类的字节码;步骤2:为实体类各字段生成对应的findBy方法,其以某个字段的值为查找条件,返回对应Tag下相匹配的记录行构成的实体对象列表;步骤3:生成findByPK方法,其以主键字段的值为查找条件,返回对应Tag下具有相同中层Key值的唯一记录行对应的实体对象;步骤4:生成findAll方法,其返回对应Tag下所有记录行构成的实体对象列表;步骤5:生成findByConditions方法,其分别以指定的多个字段值和字段名作为组合查询条件和排序依据,返回对应Tag下相匹配的记录行经过排序后构成的实体对象列表;步骤6:生成update方法,其根据指定的实体对象的主键字段找到对应Tag下具有相同中层Key值的唯一记录行,并使用实体对象的各字段值更新该记录行下的对应Key值;步骤7:生成delete方法,其根据指定的实体对象的主键字段找到对应Tag下具有相同中层Key值的唯一记录行,并删除该记录行;步骤8:生成insert方法,其根据指定实体对象所属的实体类找到对应的Tag,并在该Tag下新增一条记录行,该记录行的中层Key值为指定实体对象的主键字段值。所述的一种通用的元数据/关系映射框架,其特征在于:通过框架提供的MQL语法分析、MQL语句执行以及结果集封装逻辑,数据管理平台中下层模块的开发者可编写类SQL语法的MQL语句以直接对元数据进行CRUD操作。所述的一种通用的元数据/关系映射框架,其特征在于:在对元数据进行增、删、改等写操作时,元数据/关系映射框架通过AOP技术自动维护事务的开启和提交,并在发生任何异常时自动回滚之前已执行的写操作,保证了元数据的完整性和一致性,及降低了事务控制等非功能性代码对业务代码的侵入性,从而有效提升数据管理平台中各下层模块代码的可理解性与可维护性。本发明可无缝适配到电力数据管理平台中现有的元数据模块之上。框架借助动态代理和AOP等手段,对最原始的元数据增、删、改、查等操作进行透明封装,为以三层HashMap结构存储的元数据增添了关系模型所具备的能力和特征,具体包括:元数据查询语言MQL(MetadataQueryLanguage)、Tag与实体对象映射配置、元数据CRUD操作的面向对象封装、结果集封装与迭代API、事务控制等。本发明与现有的技术相比,具有如下优点:(1),框架采用动态代理、字节码生成和AOP等非侵入机制实现,不需要修改现有以HashMap为存储结构的元数据模块的任何代码。框架本身也以OSGi的Bundle形式热插拔到数据管理平台中,所有可配置部分均存放在独立的映射配置文件中。(2),框架在发生任何异常时自动回滚之前已执行的写操作,不仅保证了元数据的完整性和一致性,而且降低了事务控制等非功能性代码对业务代码的侵入性,从而有效提升数据管理平台中各下层模块代码的可理解性与可维护性。(3),使用本框架开发数据管理平台中各下层模时,能以实体对象的方式操作元数据,使得代码逻辑更易于理解,并提升了开发者对数据涉及具体业务的关注度。(4),本框架使得数据管理平台中各下层模块可以遵循标准的JavaEE多层架构开发,使得各层代码清晰分离,对电网应用的快速需求变更具有更高的适应性。附图说明图1为本发明功能及逻辑划分图。具体实施方式如图1所示。一种通用的元数据/关系映射框架,逻辑结构如下:映射配置的定义,编辑元数据/关系映射所必要的配置信息,配置信息保存在配置文件中;实体代理类的生成,根据映射配置信息,生成与元数据中Tag对应的实体代理类的字节码;DAO类及其CRUD方法的生成,根据映射配置信息,为元数据各Tag生成对应DAO类(DataAccessObject)的CRUD(Create、Retrieve、Update、Delete)方法的字节码,用于以面向对象和业务相关的方式对元数据进行增、删、改、查操作;MQL语法分析,对用户提交的类SQL的MQL语句进行语法分析,并提示语法错误信息;结果集封装与迭代,执行用户提交的MQL语句,并将返回结果集封装为实体代理类对象组成的列表以方便后续的迭代操作;事务管理,对元数据进行更改的过程中,若发生任何错误则自动回滚数据,以保证元数据的数据完整性。映射配置的定义过程如下:步骤1:启动映射配置定义模块,选择要操作的元数据格式;步骤2:定义元数据中的每个Tag对应的实体类名称;步骤3:定义Tag下的每个Key对应的字段名称和类型;步骤4:根据元数据采用的三层HashMap的中层Map,定义其Key值对应的组成字段,以作为后述实体类的主键字段;步骤5:分析并校验以上映射配置是否合法。实体代理类的生成过程如下:步骤1:读取映射配置文件,获取实体类及其字段的信息;步骤2:根据映射配置信息,利用虚拟机字节码生成工具,生成实体类的字节码,包括字段、主键字段、各字段的setter/getter方法;步骤3:结合动态代理模式,为实体类生成代理接口;步骤4:利用虚拟机字节码生成工具,生成代理接口的实现类。DAO类及其CRUD方法的生成过程如下:步骤1:根据映射配置信息,利用虚拟机字节码生成工具,为元数据各Tag生成对应DAO类的字节码;步骤2:为实体类各字段生成对应的findBy方法,其以某个字段的值为查找条件,返回对应Tag下相匹配的记录行构成的实体对象列表;步骤3:生成findByPK方法,其以主键字段的值为查找条件,返回对应Tag下具有相同中层Key值的唯一记录行对应的实体对象;步骤4:生成findAll方法,其返回对应Tag下所有记录行构成的实体对象列表;步骤5:生成findByConditions方法,其分别以指定的多个字段值和字段名作为组合查询条件和排序依据,返回对应Tag下相匹配的记录行经过排序后构成的实体对象列表;步骤6:生成update方法,其根据指定的实体对象的主键字段找到对应Tag下具有相同中层Key值的唯一记录行,并使用实体对象的各字段值更新该记录行下的对应Key值;步骤7:生成delete方法,其根据指定的实体对象的主键字段找到对应Tag下具有相同中层Key值的唯一记录行,并删除该记录行;步骤8:生成insert方法,其根据指定实体对象所属的实体类找到对应的Tag,并在该Tag下新增一条记录行,该记录行的中层Key值为指定实体对象的主键字段值。通过框架提供的MQL语法分析、MQL语句执行以及结果集封装逻辑,数据管理平台中下层模块的开发者可编写类SQL语法的MQL语句以直接对元数据进行CRUD操作。在对元数据进行增、删、改等写操作时,元数据/关系映射框架通过AOP(Aspect-OrientedProgramming)技术自动维护事务的开启和提交,并在发生任何异常时自动回滚之前已执行的写操作,保证了元数据的完整性和一致性,及降低了事务控制等非功能性代码对业务代码的侵入性,从而有效提升数据管理平台中各下层模块代码的可理解性与可维护性。如图1所示,本发明为一种通用的元数据/关系映射框架,可适配到电力数据管理平台中现有的元数据模块之上。框架借助动态代理和AOP等手段,对最原始的元数据增、删、改、查等操作进行了透明的面向对象封装,同时为以三层HashMap结构存储的元数据增添了关系模型所具备的能力和特征。实施例1,生成实体代理类。首先,读取映射配置文件,获取实体类及其字段的信息;然后,根据映射配置信息,利用虚拟机字节码生成工具,生成实体类的字节码,包括字段、主键字段、各字段的setter/getter方法;接着,结合动态代理模式,为实体类生成代理接口;最后,生成代理接口的实现类。实施例2,生成实体代理类对应的DAO类及其CRUD方法。首先,根据映射配置信息,利用虚拟机字节码生成工具,为元数据各Tag生成对应DAO类的字节码;然后,为各DAO类生成以字段值为查找条件的findBy方法、以主键字段为查找条件的findByPK方法、返回对应Tag下所有记录行构成的实体对象列表的findAll方法、以多个字段值和字段名为组合查询条件和排序依据的findByConditions方法;最后,分别生成用于修改、删除和插入实体类对象的update、delete和insert方法。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1