專利名稱:一種數(shù)據(jù)庫平臺的訪問方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信行數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫平臺的訪問方法。
技術(shù)背景
現(xiàn)有的軟件系統(tǒng)中往往一個軟件只能對應(yīng)一種數(shù)據(jù)庫,比如ORACLE、SQL、MySQL 等,缺乏靈活性。但是通常情況下,每個客戶由于自己的數(shù)據(jù)或者性能要求,對于數(shù)據(jù)庫要求也可能不一樣。這樣就會導致一個軟件對于不同的數(shù)據(jù)庫需要作不同的處理,相當于開發(fā)多套程序,開發(fā)人員工作量大(比如每個功能對于不同的數(shù)據(jù)庫,可能要編寫不同的SQL 語句),維護代價大(比如在使用中發(fā)現(xiàn)某個功能有缺陷,調(diào)整時需要對于不同的數(shù)據(jù)庫都要調(diào)整),軟件使用非常不靈活。發(fā)明內(nèi)容
本發(fā)明要解決的問題是克服現(xiàn)有技術(shù)的不足而提供一種能用統(tǒng)一接口訪問多種數(shù)據(jù)庫平臺的數(shù)據(jù)庫平臺的訪問方法。
為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為一種數(shù)據(jù)庫平臺的訪問方法,訪問系統(tǒng)的邏輯分層包括持久對象層、業(yè)務(wù)邏輯層和數(shù)據(jù)庫訪問層,所述訪問方法包括如下步驟客戶端把需要入庫的數(shù)據(jù)組合成為一個持久對象傳入到業(yè)務(wù)邏輯層; 在業(yè)務(wù)邏輯層對客戶端傳入的數(shù)據(jù)進行有效性驗證,如果驗證無效,則返回給客戶端, 如果驗證有效,則通過統(tǒng)一的數(shù)據(jù)訪問接口傳入到數(shù)據(jù)庫訪問層;數(shù)據(jù)庫訪問層判斷當前使用的數(shù)據(jù)庫是ORACLE或SQL或MySQL ;判斷后調(diào)用不同的訪問方式,將客戶端傳入的數(shù)據(jù)寫入到當前數(shù)據(jù)庫中;數(shù)據(jù)庫訪問層將數(shù)據(jù)入庫,失敗則返回入庫失敗的信息,成功則返回數(shù)據(jù)入庫成功信肩、ο
進一步的,所述在業(yè)務(wù)邏輯層對客戶端傳入的數(shù)據(jù)進行有效性驗證條件為字段是否為空或字段是否符合數(shù)據(jù)庫的字段要求。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果本發(fā)明利用了業(yè)務(wù)邏輯層與數(shù)據(jù)庫訪問層的分層方式,統(tǒng)一了業(yè)務(wù)邏輯層對數(shù)據(jù)庫訪問層的接口,可以通過配置適應(yīng)多種數(shù)據(jù)庫平臺,同時支持多個數(shù)據(jù)庫,如ORACLE、SQL、 MySQL0
圖1為本發(fā)明邏輯分層結(jié)構(gòu)圖; 圖2為本發(fā)明訪問流程圖。
具體實施方式
以下結(jié)合實施例及附圖對本發(fā)明進行詳細的描述。
數(shù)據(jù)庫(DataBase,DB)是一個長期存儲在計算機內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合。它是一個按數(shù)據(jù)結(jié)構(gòu)來存儲和管理數(shù)據(jù)的計算機軟件系統(tǒng)。
而對象-關(guān)系映射(Object/Relation Mapping,簡稱0RM)是隨著面向?qū)ο蟮能浖_發(fā)方法發(fā)展而產(chǎn)生的。面向?qū)ο蟮拈_發(fā)方法是當今企業(yè)級應(yīng)用開發(fā)環(huán)境中的主流開發(fā)方法,關(guān)系數(shù)據(jù)庫是企業(yè)級應(yīng)用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲系統(tǒng)。對象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實體的兩種表現(xiàn)形式,業(yè)務(wù)實體在內(nèi)存中表現(xiàn)為對象,在數(shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù)。 內(nèi)存中的對象之間存在關(guān)聯(lián)和繼承關(guān)系,而在數(shù)據(jù)庫中,關(guān)系數(shù)據(jù)無法直接表達多對多關(guān)聯(lián)和繼承關(guān)系。因此,對象-關(guān)系映射(ORM)系統(tǒng)一般以中間件的形式存在,主要實現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫數(shù)據(jù)的映射。
如圖1所示,本發(fā)明數(shù)據(jù)庫平臺的訪問系統(tǒng)的邏輯分層為持久對象層、業(yè)務(wù)邏輯層和數(shù)據(jù)庫訪問層。
采用ORM方法要求在設(shè)計中首先要分析問題域,找出所有問題域中相關(guān)事務(wù),從中抽象出對象;然后從抽象中的對象中找到所有的持久化對象(P0,Persistent Object), 所謂持久對象就是由數(shù)據(jù)庫管理系統(tǒng)負責管理的,可以持久保留,將來可被提取的對象,將這些持久對象以“一類一表格”的原則映射到數(shù)據(jù)庫中,通過數(shù)據(jù)庫管理系統(tǒng)建立表格;然后定義持久對象。持久化對象層在系統(tǒng)中被業(yè)務(wù)邏輯層和數(shù)據(jù)庫訪問層使用。
業(yè)務(wù)邏輯層邏輯分層結(jié)構(gòu)的位置很關(guān)鍵,其處于數(shù)據(jù)庫訪問層與表示層(即客戶端)中間,起到了數(shù)據(jù)交換中承上啟下的作用,同時用于做一些有效性驗證的工作,以更好的保證程序運行的健壯性。驗證完成后,通過統(tǒng)一的數(shù)據(jù)訪問接口傳入到數(shù)據(jù)庫訪問層。
統(tǒng)一的數(shù)據(jù)庫訪問層對應(yīng)不同的數(shù)據(jù)庫,均采用統(tǒng)一的數(shù)據(jù)訪問接口,統(tǒng)一了業(yè)務(wù)層對數(shù)據(jù)庫訪問層的接口。數(shù)據(jù)庫訪問層根據(jù)業(yè)務(wù)邏輯層傳入的數(shù)據(jù)分辨出當前的系統(tǒng)對應(yīng)的數(shù)據(jù)庫是什么,是ORACLE,還是SQL,或者其它數(shù)據(jù)庫。在數(shù)據(jù)庫訪問層中,所有持久對象均采用“雙構(gòu)造函數(shù)”方法在程序中進行構(gòu)造,其中,一個構(gòu)造函數(shù)參數(shù)為所有初始化該持久對象的值,封裝數(shù)據(jù)模塊中“存”操作,另一個構(gòu)造函數(shù)的參數(shù)為唯一標識該持久對象的值,封裝數(shù)據(jù)模塊中“取”操作。其它數(shù)據(jù)庫操作由相應(yīng)方法封裝,所有與數(shù)據(jù)庫層發(fā)送交互的動作,均放在專門的數(shù)據(jù)模塊中,由中間件層相應(yīng)方法封裝。
本發(fā)明利用了業(yè)務(wù)層與數(shù)據(jù)訪問層的分層方式,以及ORM的多元訪問技術(shù),組成了一種支持多個數(shù)據(jù)庫平臺的訪問方法。
圖2,本發(fā)明數(shù)據(jù)庫平臺的訪問方法包括如下步驟1、客戶端把需要入庫的數(shù)據(jù)組合成為一個持久對象傳入到業(yè)務(wù)邏輯層;2、在業(yè)務(wù)邏輯層對客戶端傳入的數(shù)據(jù)進行有效性驗證,如果驗證無效,則返回給客戶端,如果驗證有效,則通過統(tǒng)一的數(shù)據(jù)訪問接口傳入到數(shù)據(jù)庫訪問層;其中有效性驗證條件可以為字段是否為空或字段是否符合數(shù)據(jù)庫的字段要求。
3、數(shù)據(jù)庫訪問層判斷當前使用的數(shù)據(jù)庫是什么,是ORACLE或SQL或MySQLL,或者其它數(shù)據(jù)庫;判斷后調(diào)用不同的訪問方式,將客戶端傳入的數(shù)據(jù)寫入到當前數(shù)據(jù)庫中;4、數(shù)據(jù)庫訪問層將數(shù)據(jù)入庫,失敗則返回入庫失敗的信息,成功則返回數(shù)據(jù)入庫成功fn息ο
以上實施例僅用于說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當理解,依然可以對本發(fā)明的具體實施方式
進行修改或者對部分技術(shù)特征進行等同替換,而不脫離本發(fā)明技術(shù)方案的精神,其均應(yīng)涵蓋在本發(fā)明請求保護的技術(shù)方案范圍當中。
權(quán)利要求
1.一種數(shù)據(jù)庫平臺的訪問方法,其特征在于訪問系統(tǒng)的邏輯分層包括持久對象層、 業(yè)務(wù)邏輯層和數(shù)據(jù)庫訪問層,所述訪問方法包括如下步驟客戶端把需要入庫的數(shù)據(jù)組合成為一個持久對象傳入到業(yè)務(wù)邏輯層; 在業(yè)務(wù)邏輯層對客戶端傳入的數(shù)據(jù)進行有效性驗證,如果驗證無效,則返回給客戶端, 如果驗證有效,則通過統(tǒng)一的數(shù)據(jù)訪問接口傳入到數(shù)據(jù)庫訪問層;數(shù)據(jù)庫訪問層判斷當前使用的數(shù)據(jù)庫是ORACLE或SQL或MySQL ;判斷后調(diào)用不同的訪問方式,將客戶端傳入的數(shù)據(jù)寫入到當前數(shù)據(jù)庫中;數(shù)據(jù)庫訪問層將數(shù)據(jù)入庫,失敗則返回入庫失敗的信息,成功則返回數(shù)據(jù)入庫成功信息ο
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫平臺的訪問方法,其特征在于所述在業(yè)務(wù)邏輯層對客戶端傳入的數(shù)據(jù)進行有效性驗證條件為字段是否為空或字段是否符合數(shù)據(jù)庫的字段要求。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)庫平臺的訪問方法。訪問系統(tǒng)的邏輯分層為持久對象層、業(yè)務(wù)邏輯層和數(shù)據(jù)庫訪問層,訪問方法包括如下步驟客戶端把需要入庫的數(shù)據(jù)組合成為一個持久對象傳入到業(yè)務(wù)邏輯層;在業(yè)務(wù)邏輯層對客戶端傳入的數(shù)據(jù)進行有效性驗證,驗證無效返回給客戶端,驗證有效則通過統(tǒng)一的數(shù)據(jù)訪問接口傳入到數(shù)據(jù)庫訪問層;數(shù)據(jù)庫訪問層判斷當前使用的數(shù)據(jù)庫ORACLE或SQL或MySQL;判斷后調(diào)用不同的訪問方式,將客戶端傳入的數(shù)據(jù)寫入到當前數(shù)據(jù)庫中;數(shù)據(jù)庫訪問層將數(shù)據(jù)入庫,失敗則返回入庫失敗的信息,成功則返回數(shù)據(jù)入庫成功信息。本發(fā)明統(tǒng)一了業(yè)務(wù)邏輯層對數(shù)據(jù)庫訪問層的接口,通過配置適應(yīng)多種數(shù)據(jù)庫平臺,同時支持多個數(shù)據(jù)庫。
文檔編號G06F17/30GK102521277SQ20111038007
公開日2012年6月27日 申請日期2011年11月24日 優(yōu)先權(quán)日2011年11月24日
發(fā)明者張青會, 李國棟, 李海輝 申請人:廣東高新興通信股份有限公司