Java中的JDBC驅(qū)動可以分為四種類型,包括JDBC-ODBC橋、本地API驅(qū)動、網(wǎng)絡(luò)協(xié)議驅(qū)動和本地協(xié)議驅(qū)動。
JDBC驅(qū)動類型一、JDBC-ODBC橋
JDBC-ODBC 橋 是sun公司提供的,是jdk提供的的標(biāo)準(zhǔn)API. 這種類型的驅(qū)動實際是把所有 JDBC的調(diào)用傳遞給ODBC ,再由ODBC調(diào)用本地數(shù)據(jù)庫驅(qū)動代碼.( 本地數(shù)據(jù)庫驅(qū)動代碼是指 由數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫操作二進制代碼庫,例如在oracle for windows中就是oci dll 文 件)
只要本地機裝有相關(guān)的ODBC驅(qū)動那么采用JDBC-ODBC橋幾乎可以訪問所有的數(shù)據(jù)庫,JDBC- ODBC方法對于客戶端已經(jīng)具備ODBC driver的應(yīng)用還是可行的.
但是,由于JDBC-ODBC先調(diào)用 ODBC再由ODBC去調(diào)用本地數(shù)據(jù)庫接口訪問數(shù)據(jù)庫.所以,執(zhí)行效率比較低,對于那些大數(shù)據(jù)量 存取的應(yīng)用是不適合的.而且,這種方法要求客戶端必須安裝ODBC 驅(qū)動,所以對于基于 internet ,intranet的應(yīng)用也是不合適的.因為,你不可能要求所有客戶都能找到ODBC driver.
JDBC驅(qū)動類型二、本地API驅(qū)動
本地API驅(qū)動直接把JDBC調(diào)用轉(zhuǎn)變?yōu)閿?shù)據(jù)庫的標(biāo)準(zhǔn)調(diào)用再去訪問數(shù)據(jù)庫.
這種方法需要本地 數(shù)據(jù)庫驅(qū)動代碼. 本地API驅(qū)動 | 廠商DB代碼---------------數(shù)據(jù)庫Server (圖二) 這種驅(qū)動比起JDBC-ODBC橋執(zhí)行效率大大提高了.但是,它仍然需要在客戶端加載數(shù)據(jù)庫廠商 提供的代碼庫.這樣就不適合基于internet的應(yīng)用.并且,他的執(zhí)行效率比起3,4型的JDBC驅(qū)動 還是不夠高.
JDBC驅(qū)動類型三、網(wǎng)絡(luò)協(xié)議驅(qū)動
這種驅(qū)動實際上是根據(jù)我們熟悉的三層結(jié)構(gòu)建立的. JDBC先把對數(shù)局庫的訪問請求傳遞給網(wǎng) 絡(luò)上的中間件服務(wù)器. 中間件服務(wù)器再把請求翻譯為符合數(shù)據(jù)庫規(guī)范的調(diào)用,再把這種調(diào)用 傳給數(shù)據(jù)庫服務(wù)器.如果中間件服務(wù)器也是用java開法的,那么在在中間層也可以使用1,2型 JDBC驅(qū)動程序作為訪問數(shù)據(jù)庫的方法. 網(wǎng)絡(luò)協(xié)議驅(qū)動---------中間件服務(wù)器------------數(shù)據(jù)庫Server
由于這種驅(qū)動是基于server的.所以,它不需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫.而且 他在執(zhí)行效率和可升級性方面是比較好的.因為大部分功能實現(xiàn)都在server端,所以這種驅(qū)動 可以設(shè)計的很小,可以非??焖俚募虞d到內(nèi)存中. 但是,這種驅(qū)動在中間件層仍然需要有配置 其它數(shù)據(jù)庫驅(qū)動程序,并且由于多了一個中間層傳遞數(shù)據(jù),它的執(zhí)行效率還不是最好.
JDBC驅(qū)動類型四、本地協(xié)議驅(qū)動
這種驅(qū)動直接把JDBC調(diào)用轉(zhuǎn)換為符合相關(guān)數(shù)據(jù)庫系統(tǒng)規(guī)范的請求.由于4型驅(qū)動寫的應(yīng)用可 以直接和數(shù)據(jù)庫服務(wù)器通訊.這種類型的驅(qū)動完全由java實現(xiàn),因此實現(xiàn)了平臺獨立性. 本地協(xié)議驅(qū)動---------數(shù)據(jù)庫Server
由于這種驅(qū)動不需要先把JDBC的調(diào)用傳給ODBC或本地數(shù)據(jù)庫接口或者是中間層服務(wù)器.所 以它的執(zhí)行效率是非常高的.而且,它根本不需要在客戶端或服務(wù)器端裝載任何的軟件或驅(qū)動. 這種驅(qū)動程序可以動態(tài)的被下載.但是對于不同的數(shù)據(jù)庫需要下載不同的驅(qū)動程序.
以上對四種類型的JDBC驅(qū)動做了一個說明.那么它們適合那種類型的應(yīng)用開發(fā)呢?
JDBC-ODBC橋由于它的執(zhí)行效率不高,更適合做為開發(fā)應(yīng)用時的一種過度方案,或著對于初學(xué) 者了解JDBC編程也較適用. 對于那些需要大數(shù)據(jù)量操作的應(yīng)用程序則應(yīng)該考慮2,3,4型驅(qū)動.在intranet方面的應(yīng)用可以 考慮2型驅(qū)動,但是由于3,4型驅(qū)動在執(zhí)行效率上比2型驅(qū)動有著明顯的優(yōu)勢,而且目前開發(fā) 的趨勢是使用純java.所以3,4型驅(qū)動也可以作為考慮對象. 至于基于internet方面的應(yīng)用就只有考慮3,4型驅(qū)動了. 因為3型驅(qū)動可以把多種數(shù)據(jù)庫驅(qū) 動都配置在中間層服務(wù)器.所以3型驅(qū)動最適合那種需要同時連接多個不同種類的數(shù)據(jù)庫, 并且對并發(fā)連接要求高的應(yīng)用. 4型驅(qū)動則適合那些連接單一數(shù)據(jù)庫的工作組應(yīng)用。