JDBC驅(qū)動類別淺析
一、JDBC -ODBC橋
JDBC -ODBC橋加ODBC驅(qū)動程序,JavaSoft橋產(chǎn)品利用ODBC驅(qū)動程序提供JDBC訪問。注意,必須將ODBC二進(jìn)制代碼(許多情況下還包括數(shù)據(jù)庫客戶機(jī)代碼)加載到使用該驅(qū)動程序的每個(gè)客戶機(jī)上。這種類型的JDBC驅(qū)動程序最適合于企業(yè)網(wǎng)(這種網(wǎng)絡(luò)上客戶機(jī)的安裝不是主要問題),或者是用Java編寫的三層結(jié)構(gòu)的應(yīng)用程序服務(wù)器代碼。
Application--->JDBC -ODBC Bridge(Type1 jdbc driver)---->JDBC -ODBC Library--->ODBC Driver-->Database
只要本地機(jī)裝有相關(guān)的odbc驅(qū)動那么采用jdbc -odbc橋幾乎可以訪問所有的數(shù)據(jù)庫,jdbc - odbc方法對于客戶端已經(jīng)具備odbc driver的應(yīng)用還是可行的。適用于快速的原型系統(tǒng),沒有提供JDBC 驅(qū)動的數(shù)據(jù)庫如Access。
但是,由于jdbc -odbc先調(diào)用 odbc再由odbc去調(diào)用本地?cái)?shù)據(jù)庫接口訪問數(shù)據(jù)庫.所以,執(zhí)行效率比較低,對于那些大數(shù)據(jù)量 存取的應(yīng)用是不適合的.而且,這種方法要求客戶端必須安裝odbc 驅(qū)動,所以對于基于 internet ,intranet的應(yīng)用也是不合適的。
二、本地Api驅(qū)動:JAVA to Native API
這種類型的驅(qū)動程序把客戶機(jī)API上的JDBC驅(qū)動調(diào)用轉(zhuǎn)換為Oracle、Sybase、Informix、DB2或其它DBMS的調(diào)用。注意,象橋驅(qū)動程序一樣,這種類型的驅(qū)動程序要求將某些二進(jìn)制代碼加載到每臺客戶機(jī)上。
Application--->JDBC Driver(Type2 jdbc driver)---->Native Database library---->Database 利用開發(fā)商提供的本地庫來直接與數(shù)據(jù)庫通信。本地api驅(qū)動直接把jdbc 調(diào)用轉(zhuǎn)變?yōu)閿?shù)據(jù)庫的標(biāo)準(zhǔn)調(diào)用再去訪問數(shù)據(jù)庫。
三、網(wǎng)絡(luò)協(xié)議驅(qū)動:Java to net
這種驅(qū)動程序?qū)DBC 轉(zhuǎn)換為與DBMS無關(guān)的網(wǎng)絡(luò)協(xié)議,這種協(xié)議又被某個(gè)服務(wù)器轉(zhuǎn)換為一種DBMS協(xié)議。這種網(wǎng)絡(luò)服務(wù)器中間件能夠?qū)⑺募僇ava客戶機(jī)連接到多種不同的數(shù)據(jù)庫上。所用的具體協(xié)議取決于提供者。通常,這是最為靈活的JDBC 驅(qū)動程序。有可能所有這種解決方案的提供者都提供適合于Intranet用的產(chǎn)品。為了使這些產(chǎn)品也支持Internet訪問,它們必須處理Web所提出的安全性、通過防火墻的訪問等方面的額外要求。
Application--->Jdbc Driver(Type3 jdbc driver)----->java middleware--->JDBC Driver---->Database
JDBC先把對數(shù)局庫的訪問請求傳遞給網(wǎng)絡(luò)上的中間件服務(wù)器. 中間件服務(wù)器再把請求翻譯為符合數(shù)據(jù)庫規(guī)范的調(diào)用,再把這種調(diào)用傳給數(shù)據(jù)庫服務(wù)器.如果中間件服務(wù)器也是用java開發(fā)的,那么在在中間層也可以使用1,2型 jdbc 驅(qū)動程序作為訪問數(shù)據(jù)庫的方法。
由于這種驅(qū)動是基于server的.所以,它不需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫.而且他在執(zhí)行效率和可升級性方面是比較好的.因?yàn)榇蟛糠止δ軐?shí)現(xiàn)都在server端,所以這種驅(qū)動 可以設(shè)計(jì)的很小,可以非常快速的加載到內(nèi)存中. 但是,這種驅(qū)動在中間件層仍然需要有配置 其它數(shù)據(jù)庫驅(qū)動程序,并且由于多了一個(gè)中間層傳遞數(shù)據(jù),它的執(zhí)行效率還不是最好。
四、本地協(xié)議驅(qū)動:JAVA to native dababase
這種類型的驅(qū)動程序?qū)DBC 調(diào)用直接轉(zhuǎn)換為DBMS所使用的網(wǎng)絡(luò)協(xié)議。這將允許從客戶機(jī)機(jī)器上直接調(diào)用DBMS服務(wù)器,是Intranet訪問的一個(gè)很實(shí)用的解決方法。
Application--->Jdbc driver(type4 jdbc driver)----->database engine--->database
這種驅(qū)動直接把JDBC調(diào)用轉(zhuǎn)換為符合相關(guān)數(shù)據(jù)庫系統(tǒng)規(guī)范的請求.由于4 型JDBC驅(qū)動寫的應(yīng)用可以直接和數(shù)據(jù)庫服務(wù)器通訊.這種類型的驅(qū)動完全由java實(shí)現(xiàn),因此實(shí)現(xiàn)了平臺獨(dú)立性。最高的性能,通過自己的本地協(xié)議直接與數(shù)據(jù)庫引擎通信,具備在Internet裝配的能力。
【編輯推薦】