[发明专利]基于动态代理的跨数据库访问方法及抽象数据访问方法在审
申请号: | 201810665210.0 | 申请日: | 2018-06-26 |
公开(公告)号: | CN108959496A | 公开(公告)日: | 2018-12-07 |
发明(设计)人: | 史晋 | 申请(专利权)人: | 南京汇银迅信息技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京天江律师事务所 11537 | 代理人: | 朱红来 |
地址: | 210000 江苏省南京市建*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库访问 抽象数据 动态代理 数据源 访问数据库 数据库连接 数据库 注解 服务 数据库访问对象 数据库连接参数 服务组件 配置信息 数据访问 注解方式 访问 服务类 硬编码 源代理 调用 配置 拦截 传递 | ||
本发明提供了基于动态代理的跨数据库访问方法及抽象数据访问方法;基于动态代理的跨数据库访问方法,包括:对多个数据源进行定义和配置,形成抽象数据源,多个数据源通过抽象数据源代理配置;在需要访问数据库的服务中,采用服务注解的方式,将该服务需要访问的数据库别名注解在服务类名前面;执行数据访问时,动态代理将拦截访问数据库的服务方法,获取采用服务注解方式注入到该对象中的数据库别名,根据该数据库别名从配置信息中获取该数据库连接参数;生成该数据源对应的数据库访问对象的实例;取得数据库访问连接,并传递到后续的调用方法中。本发明的方法中程序无需硬编码数据库连接,采用隐性传参使服务组件的参数与数据库连接解藕。
技术领域
本发明涉及一种数据库访问方法,尤其涉及基于动态代理的跨数据库访问方法及抽象数据访问方法。
背景技术
在软件开发过程中,对于大型、复杂的项目会有一个以上的物理数据库,特别是对于互联网实时业务,往往会将数据库按业务垂直划分,提高整个系统的性能和吞吐量,这其中就必须要求WEB平台能实现同一个业务服务功有效地、方便、高性地跨数据库访问;
不同于常见的单一数据实例的方案,跨数据库的访问就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据,目前最常用的方案主要是:配置多个数据访问对象,这种方案是直接对应多个数据源访问定义,使用不同的数据库访问对象来对应不同的物理数据库,这种方案在配置时决定了数据源信息,在程序开发时需要将数据访问对象硬编码在代码中。这种方案的主要技术缺点有:
1、程序硬编码,程序开发时使用不同的数据源必须和具体的代码在一起,无法分离
2、无法运行时动态切换数据源,不适用于特定需要动态切换数据源的业务场景。
3、对异构数据库无法统一支持,对同一个业务服务访问不同类型的数据库,SQL语句无法做到统一,同一个SQL语句很难统一访问不同的类型的数据库。
发明内容
为了解决上述技术所存在的不足之处,本发明提供了基于动态代理的跨数据库访问方法及抽象数据访问方法。
为了解决以上技术问题,本发明采用的技术方案是:基于动态代理的跨数据库访问方法,包括:
对多个数据源进行定义和配置,形成抽象数据源,多个数据源通过抽象数据源代理配置;
在需要访问数据库的服务中,采用服务注解的方式,将该服务需要访问的数据库别名注解在服务类名前面;
执行数据访问时,动态代理将拦截访问数据库的服务方法,获取采用服务注解方式注入到该对象中的数据库别名,根据该数据库别名从配置信息中获取该数据库连接参数;
生成该数据源对应的数据库访问对象的实例;
取得数据库访问连接,并传递到后续的调用方法中。
进一步地,所述取得数据库访问连接的后续调用方法为:
a)数据访问时提供SQL语句或SQL语句数组,数据访问框架为自动拼成正确的SQL;
b)数据访问时提供参数对象,参数对象是命名-值对对象,将参数对象做字符串的持久化处理,形式可以在多种协议中可以传输请求参数串;
c)在服务层,将客户端传过来的请求参数串反序列化为语言的对象,所述语言的对象包含请求参数的所有层次关系;
d)解析SQL语句,将模板中的动态标签进行分析,形成SQL语法树结构;
e)在SQL语法树中对参数命名占位符进行动态解析,生成可执行的SQL字符串;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京汇银迅信息技术有限公司,未经南京汇银迅信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810665210.0/2.html,转载请声明来源钻瓜专利网。