[發明專利]基于動態代理的跨數據庫訪問方法及抽象數據訪問方法在審
| 申請號: | 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.szxzyx.cn/pat/books/201810665210.0/2.html,轉載請聲明來源鉆瓜專利網。





