一种根据模型描述同步数据库表结构的方法及设备技术

技术编号:27656203 阅读:19 留言:0更新日期:2021-03-12 14:18
本申请公开了一种根据模型描述同步数据库表结构的方法及设备,用以解决现有的描述数据库表结构的方式无法有效管理数据库表结构的技术问题。方法包括:将数据库表结构抽象为第一数据库对象模型描述;获取数据库连接信息及设置信息,构造Hibernate服务注册构造器;获取并解析第二数据库对象模型描述,映射成抽象语法树,根据抽象语法树生成实体类;其中,第二数据库对象模型描述是基于第一数据库对象模型描述修改得到的;基于Hibernate服务注册构造器,创建实例,以根据实体类与数据库表结构的差别生成结构化查询语言,同步数据库表结构。本申请通过上述方法对数据库表结构进行了直观、有效的管理和维护,保证了数据库表结构描述和实体类中的描述保持一致。

【技术实现步骤摘要】
一种根据模型描述同步数据库表结构的方法及设备
本申请涉及数据处理
,尤其涉及一种根据模型描述同步数据库表结构的方法及设备。
技术介绍
为了对数据库表结构进行有效的管理,常将数据库表结构进行统一描述,方便同步数据库表结构。常见的描述方法有以下三种:1.采用实体映射框架(如Hibernate、MyBatis),将表结构描述成代码中的实体,通过标注或者配置的方式与数据库建立映射关系。但是这种方法不能使用户直接了解到整个产品数据库中有多少张表,也不知道每张表具体的表结构,不具备直观性。2.单独使用一份结构去描述表结构,并对其进行管理。这种方式虽然能够清楚了解到数据库表的结构,但是因为它是独立的一种结构,无法对其进行检查,很难保证描述的正确性和一致性。3.使用SQL语句描述表结构。该方法在表结构变更时都要使用单独的SQL语句描述,且不同类型的数据库的SQL描述都是不同的,管理复杂且不够直观。
技术实现思路
本申请实施例提供了一种根据模型描述同步数据库表结构的方法及设备,用以解决现有的描述数据库表结构的方式无法有效管理数据库表结构的技术问题。一方面,本申请实施例提供了一种根据模型描述同步数据库表结构的方法,包括:将数据库表结构抽象为第一数据库对象模型描述;获取数据库连接信息及设置信息,构造Hibernate服务注册构造器;获取并解析第二数据库对象模型描述,映射成抽象语法树,根据抽象语法树生成实体类;其中,第二数据库对象模型描述是基于第一数据库对象模型描述修改得到的;基于Hibernate服务注册构造器,创建实例,以根据实体类与数据库表结构的差别生成结构化查询语言,同步数据库表结构。在本申请的一种实现方式中,将数据库表结构抽象为数据库对象模型描述,具体包括:将不同类型数据库的表结构抽象为一种第一数据库对象模型描述。在本申请的一种实现方式中,将不同类型数据库的表结构抽象为一种第一数据库对象模型描述,具体包括:基于不同类型数据库的表结构的共性,对不同类型数据库的表结构的特性进行扩展描述,以得到一种第一数据库对象模型描述;第一数据库对象模型描述包括不同类型数据库的表结构的共性和特性。在本申请的一种实现方式中,映射成抽象语法树之前,所述方法还包括:判断第二数据库对象模型描述的修改是否与相应的数据库兼容。在本申请的一种实现方式中,获取并解析第二数据库对象模型描述,映射成抽象语法树,根据抽象语法树生成实体类,具体包括:获取数据库对象模型描述列表;将数据库对象模型描述列表中的每一个第二数据库对象模型描述都映射成相应的抽象语法树;其中,每个抽象语法树对应一个实体类;针对各抽象语法树,遍历该抽象语法树,根据该抽象语法树的各个节点生成实体类;其中,抽象语法树的各个节点分别对应相应第二数据库对象模型描述的各个属性。在本申请的一种实现方式中,根据抽象语法树生成实体类,具体包括:根据抽象语法树生成Hibernate映射表结构的实体类;其中,实体类包括Hibernate映射表的标注。在本申请的一种实现方式中,根据实体类与数据库表结构的差别生成结构化查询语言,同步数据库表结构,具体包括:根据Hibernate映射表的映射关系,对比实体类中列的结构和数据库表结构的差别,以生成创建或增量结构化语言,同步数据库表结构。在本申请的一种实现方式中,根据抽象语法树生成实体类之后,方法还包括:调用javac命令对实体类进行编译,以得到字节码文件,将字节码文件存入脚本目录中;扫描脚本目录,使用指定的类加载器加载字节码文件。在本申请的一种实现方式中,创建实例之前,方法还包括:使用Hibernate服务注册构造器构造服务注册中心;通过服务注册中心创建元数据源;将编译后的实体类添加至元数据源的被标注类列表中;其中,被标注类列表用于存放扫描到的编译后的实体类;通过编译后的实体类中的标注,初始化实体类及其与数据库的映射关系。另一方面,本申请实施例还提供了一种根据模型描述同步数据库表结构的设备,设备包括:处理器;及存储器,其上存储有可执行代码,当可执行代码被执行时,使得处理器执行如上述的一种根据模型描述同步数据库表结构的方法。本申请实施例提供的一种根据模型描述同步数据库表结构的方法及设备,至少包括以下有益效果:将数据库表结构抽象为数据库对象模型描述,表结构的同步全部使用模型去同步,可以直观且有效的管理数据库表结构。基于Hibernate,根据实体类与数据库表结构的差别生成SQL来同步数据库表结构,解决了表数据库表结构可能和实体类中的描述不一致的问题。此外,Hibernate是一种Java框架,本申请将数据库表结构的同步与Hibernate进行集成,使得数据库对象模型描述能够应用于Java语言中。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请实施例提供的一种根据模型描述同步数据库表结构的方法流程图;图2为本申请实施例提供的一种根据模型描述同步数据库表结构的设备结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。为实现同步数据库表结构,并对其进行维护和管理,常对数据库的表结构进行统一描述。常见的描述方法有以下三种:采用Java相关实体映射框架、单独使用一份结构去描述表结构、使用SQL语句描述表结构。其中,Java相关实体映射框架(如Hibernate、MyBatis)是基于实体类和数据库表结构之间的映射关系对表结构进行同步,这种方法不能使用户直接了解到整个产品数据库中有多少张表,也不能知道每张表具体的表结构,不具备直观性。单独使用一份结构去描述表结构虽然能够清楚数据库表的结构,但是因为它是独立的一种结构,与数据库及代码之间不具备连接关系,无法对其进行检查,因此很难保证描述的正确性以及和数据库表结构的一致性。使用SQL语句描述表结构,该方法在表结构变更时都要使用单独的SQL语句描述,了解完整的表结构也需要单独的SQL语句来执行,用户无法直观了解表结构。且不同类型的数据库的SQL语句都是不同的,管理复杂。本申请实施例提供了一种根据模型描述同步数据库表结构的方法及设备,用以解决现有的描述数据库表结构的方式无法有效管理数据库表结构的技术问题。下面通过附图对本申请实施例提出的技术方案进行详细的说明。图1为本申请实施例提供的一种根据模型描述同步数据库表结构的方法流程图。如图1所示,本申请实施例提供的根据模型描述同步数据库表结构方法主要包括以下步骤:S101、将数据库表结构抽象为第一数据库对象本文档来自技高网...

【技术保护点】
1.一种根据模型描述同步数据库表结构的方法,其特征在于,所述方法包括:/n将数据库表结构抽象为第一数据库对象模型描述;/n获取数据库连接信息及设置信息,构造Hibernate服务注册构造器;/n获取并解析第二数据库对象模型描述,映射成抽象语法树,根据所述抽象语法树生成实体类;其中,所述第二数据库对象模型描述是基于所述第一数据库对象模型描述修改得到的;/n基于所述Hibernate服务注册构造器,创建实例,以根据所述实体类与数据库表结构的差别生成结构化查询语言,同步所述数据库表结构。/n

【技术特征摘要】
1.一种根据模型描述同步数据库表结构的方法,其特征在于,所述方法包括:
将数据库表结构抽象为第一数据库对象模型描述;
获取数据库连接信息及设置信息,构造Hibernate服务注册构造器;
获取并解析第二数据库对象模型描述,映射成抽象语法树,根据所述抽象语法树生成实体类;其中,所述第二数据库对象模型描述是基于所述第一数据库对象模型描述修改得到的;
基于所述Hibernate服务注册构造器,创建实例,以根据所述实体类与数据库表结构的差别生成结构化查询语言,同步所述数据库表结构。


2.根据权利要求1所述的一种根据模型描述同步数据库表结构的方法,其特征在于,将数据库表结构抽象为第一数据库对象模型描述,具体包括:
将不同类型数据库的表结构抽象为一种所述第一数据库对象模型描述。


3.根据权利要求2所述的一种根据模型描述同步数据库表结构的方法,其特征在于,将不同类型数据库的表结构抽象为一种所述第一数据库对象模型描述,具体包括:
基于所述不同类型数据库的表结构的共性,对所述不同类型数据库的表结构的特性进行扩展描述,以得到一种所述第一数据库对象模型描述;所述第一数据库对象模型描述包括所述不同类型数据库的表结构的共性和特性。


4.根据权利要求1所述的一种根据模型描述同步数据库表结构的方法,其特征在于,映射成抽象语法树之前,所述方法还包括:
判断所述第二数据库对象模型描述的修改是否与相应的数据库兼容。


5.根据权利要求1所述的一种根据模型描述同步数据库表结构的方法,其特征在于,获取并解析第二数据库对象模型描述,映射成抽象语法树,根据所述抽象语法树生成实体类,具体包括:
获取数据库对象模型描述列表;
将所述数据库对象模型描述列表中的每一个第二数据库对象模型描述都映射成相应的抽象语法树;其中,每个所述抽象语法树对应一个所述实体类;
针对各抽象语法树,遍历该抽象语法树,根据该抽象语法树...

【专利技术属性】
技术研发人员:赵磊
申请(专利权)人:山东浪潮通软信息科技有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1