基于JDBC的数据库适配方法以及装置制造方法及图纸

技术编号:37537726 阅读:14 留言:0更新日期:2023-05-12 16:06
本说明书实施例提供基于JDBC的数据库适配方法以及装置,其中所述基于JDBC的数据库适配方法应用于JAVA虚拟机,包括:加载目标应用程序,其中,所述目标应用程序与至少一种类型的数据库连接;为每个数据库生成对应的代理实例,其中,每个代理实例中包括JDBC代理和数据库语法转换器;获取初始SQL语句;根据每个代理实例中的所述JDBC代理和所述数据库语法转换器,对所述初始SQL语句进行转换,获得每个数据库对应的目标SQL语句;此种方式可无需对已有的目标应用程序进行再次开发,即可适配各种类型的数据库,能够自适应匹配于原不支持类型的数据库,降低了额外开发的成本及测试成本。降低了额外开发的成本及测试成本。降低了额外开发的成本及测试成本。

【技术实现步骤摘要】
基于JDBC的数据库适配方法以及装置


[0001]本说明书实施例涉及计算机
,特别涉及一种基于JDBC的数据库适配方法。

技术介绍

[0002]数据库在各应用系统中起着重要作用,包括数据的持久化、数据的管理及非常方便的获取数据。应用在不同场景下有在不同数据库产品切换的需求,如性能的需求、信创(通用)的需求、复用数据库的需求、系统整合的需求等。
[0003]由于各数据库产品存在SQL语法的差异(包括数据类型的差异、运算符的差异、函数的差异、SQL的差异、元数据信息的差异)导致应用在切换不同厂商数据库时需要适配SQL语法改造,增加了额外的研发及测试成本,同时也造成发布物版本数量的激增及实施的难度加大。

技术实现思路

[0004]有鉴于此,本说明书实施例提供了一种基于JDBC的数据库适配方法。本说明书一个或者多个实施例同时涉及一种基于JDBC的数据库适配装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
[0005]根据本说明书实施例的第一方面,提供了一种基于JDBC的数据库适配方法,应用于JAVA虚拟机,包括:
[0006]加载目标应用程序,其中,所述目标应用程序与至少一种类型的数据库连接;
[0007]为每类数据库生成对应的代理实例,其中,每个代理实例中包括JDBC代理和数据库语法转换器;
[0008]获取初始SQL语句;
[0009]根据每个代理实例中的所述JDBC代理和所述数据库语法转换器,对所述初始SQL语句进行转换,获得每类数据库对应的目标SQL语句。
[0010]根据本说明书实施例的第二方面,提供了一种基于JDBC的数据库适配装置,包括:
[0011]程序加载模块,被配置为加载目标应用程序,其中,所述目标应用程序与至少一种类型的数据库连接;
[0012]实例生成模块,被配置为为每类数据库生成对应的代理实例,其中,每个代理实例中包括JDBC代理和数据库语法转换器;
[0013]语句获取模块,被配置为获取初始SQL语句;
[0014]语句转换模块,被配置为根据每个代理实例中的所述JDBC代理和所述数据库语法转换器,对所述初始SQL语句进行转换,获得每类数据库对应的目标SQL语句。
[0015]根据本说明书实施例的第三方面,提供了一种计算设备,包括:
[0016]存储器和处理器;
[0017]所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行
指令,该计算机可执行指令被处理器执行时实现上述基于JDBC的数据库适配方法的步骤。
[0018]根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述基于JDBC的数据库适配方法的步骤。
[0019]根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述基于JDBC的数据库适配方法的步骤。
[0020]本说明书一个实施例提供了基于JDBC的数据库适配方法,应用于JAVA虚拟机,包括:加载目标应用程序,其中,所述目标应用程序与至少一种类型的数据库连接;为每类数据库生成对应的代理实例,其中,每个代理实例中包括JDBC代理和数据库语法转换器;获取初始SQL语句;根据每个代理实例中的所述JDBC代理和所述数据库语法转换器,对所述初始SQL语句进行转换,获得每类数据库对应的目标SQL语句。
[0021]通过为与目标应用程序连接的各种类型的数据库,生成对应的代理实例,并利用JDBC代理,通过数据库语法转换器对初始SQL语句进行语法转换,以获得各种类型数据库对应的目标SQL语句;此种方式可无需对已有的目标应用程序进行再次开发,即可适配各种类型的数据库,能够自适应匹配于原不支持类型的数据库,对于使用者来说,是在一种无感知无侵入的状态下,可以使用各种类型的数据库,无需学习各数据库产品存在的SQL语法差异,降低了额外开发的成本及测试成本。
附图说明
[0022]图1是本说明书一个实施例提供的一种基于JDBC的数据库适配方法的结构示意图;
[0023]图2是本说明书一个实施例提供的一种基于JDBC的数据库适配方法的流程图;
[0024]图3是本说明书一个实施例提供的一种基于JDBC的数据库适配方法中应用程序启动流程图;
[0025]图4是本说明书一个实施例提供的一种基于JDBC的数据库适配方法中SQL语法转换器流程图;
[0026]图5是本说明书一个实施例提供的一种基于JDBC的数据库适配方法中多数据源支持及缓存机制示意图;
[0027]图6是本说明书一个实施例提供的一种基于JDBC的数据库适配装置的结构示意图;
[0028]图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
[0029]在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
[0030]在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含
一个或多个相关联的列出项目的任何或所有可能组合。
[0031]应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0032]首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
[0033]JVM:是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机。
[0034]class文件:全名称为Javaclass文件,为Java程序提供独立于底层主机平台的二进制形式的服务。被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。
[0035]Java数据库连接:(JavaDatabaseConnectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法;即使用Java语言操作数据库;通过控制台或客户端操作的数据库,JDBC是用Java语本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于JDBC的数据库适配方法,其特征在于,应用于JAVA虚拟机,包括:加载目标应用程序,其中,所述目标应用程序与至少一种类型的数据库连接;为每类数据库生成对应的代理实例,其中,每个代理实例中包括JDBC代理和数据库语法转换器;获取初始SQL语句;根据每个代理实例中的所述JDBC代理和所述数据库语法转换器,对所述初始SQL语句进行转换,获得每类数据库对应的目标SQL语句。2.根据权利要求1所述的方法,其特征在于,所述为每类数据库生成对应的代理实例,包括:基于JAVA探针,在探测到所述目标应用程序对应的JDBC接口的情况下,确定与所述目标应用程序连接的至少一种数据库类型;为每种数据库类型对应的数据库,生成对应的代理实例。3.根据权利要求2所述的方法,其特征在于,所述确定与所述目标应用程序连接的至少一种数据库类型,包括:基于所述JDBC接口,确定所述JDBC的属性信息;根据所述属性信息,确定与所述目标应用程序连接的至少一种数据库类型。4.根据权利要求1所述的方法,其特征在于,所述根据每个代理实例中的所述JDBC代理和所述数据库语法转换器,对所述初始SQL语句进行转换,包括:确定目标代理实例中的目标JDBC代理和目标数据库语法转换器;基于所述目标JDBC代理,采集所述初始SQL语句;通过所述目标数据库语法转换器,对所述初始SQL语句进行转换。5.根据权利要求4所述的方法,其特征在于,所述通过所述目标数据库语法转换器,对所述初始SQL语句进行转换,包括:通过所述目标数据库语法转换器,确定所述初始SQL语句对应的目标语法转换规则;根据所述目标语法转换规则,对所述初始SQL语句进行转换。6.根据权利要求5所述的方法,其特征在于,所述根据所述目标语法转换规则,对所述初始SQL语句进行转换,包括:解析所述初始SQL语句,生成抽象语法树;遍...

【专利技术属性】
技术研发人员:周神为葛跃云张鹏辉黄俊灵
申请(专利权)人:恒生电子股份有限公司
类型:发明
国别省市:

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

1