JDBC 驅(qū)動(dòng)類型

2018-09-28 19:58 更新

驅(qū)動(dòng)類型

什么是 JDBC 驅(qū)動(dòng)程序?

JDBC 驅(qū)動(dòng)實(shí)現(xiàn)了 JDBC API 中定義的接口,該接口用于與數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行交互。

例如,使用 JDBC 驅(qū)動(dòng)程序可以讓你打開(kāi)數(shù)據(jù)庫(kù)連接,并通過(guò)發(fā)送 SQL 或數(shù)據(jù)庫(kù)命令,然后通過(guò) Java 接收結(jié)果。

java.sql 包中附帶的 JDK,包含了定義各種類與他們的行為和實(shí)際實(shí)現(xiàn),這些類都在第三方驅(qū)動(dòng)程序中完成。第三方供應(yīng)商在他們的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序中都實(shí)現(xiàn)了 java.sql.Driver 接口。

JDBC 驅(qū)動(dòng)程序類型

JDBC 驅(qū)動(dòng)程序的實(shí)現(xiàn),因?yàn)楦鞣N各樣的操作系統(tǒng)和 Java 運(yùn)行在硬件平臺(tái)的不同而不同。Sun 公司將實(shí)現(xiàn)類型分為四類:類型1,2,3,4,其解釋如下-

類型1:JDBC-ODBC 橋驅(qū)動(dòng)程序:

在類型1驅(qū)動(dòng)程序中,一個(gè) JDBC 橋接器是用來(lái)訪問(wèn)安裝在每個(gè)客戶機(jī)上的 ODBC 驅(qū)動(dòng)程序。為了使用 ODBC,需要在目標(biāo)數(shù)據(jù)庫(kù)上配置系統(tǒng)數(shù)據(jù)源名稱(DSN)。

當(dāng) Java 剛出來(lái)時(shí),這是一個(gè)很有用的驅(qū)動(dòng)程序,因?yàn)榇蠖鄶?shù)的數(shù)據(jù)庫(kù)只支持 ODBC 訪問(wèn),但現(xiàn)在此類型的驅(qū)動(dòng)程序僅適用于實(shí)驗(yàn)用途或在沒(méi)有其他選擇的情況。

自帶 JDK 1.2 中的 JDBC-ODBC 橋是這類驅(qū)動(dòng)程序的一個(gè)很好的例子。

類型2:JDBC-Native API

在類型2驅(qū)動(dòng)程序中,JDBC API 調(diào)用轉(zhuǎn)換成原生的 C/C++ API 調(diào)用,這對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō)具有唯一性。這些驅(qū)動(dòng)程序通常由數(shù)據(jù)庫(kù)供應(yīng)商提供,并和 JDBC-ODBC 橋驅(qū)動(dòng)程序同樣的方式使用。該供應(yīng)商的驅(qū)動(dòng)程序必須安裝在每臺(tái)客戶機(jī)上。

如果我們改變了當(dāng)前數(shù)據(jù)庫(kù),我們必須改變?cè)?API ,因?yàn)樗蔷唧w到某一個(gè)數(shù)據(jù)庫(kù),并且他們大多已經(jīng)失效了。即使這樣用類型2驅(qū)動(dòng)程序也能提高一些速度,因?yàn)樗?ODBC 的開(kāi)銷。

Oracle 調(diào)用接口(OCI)驅(qū)動(dòng)程序是一個(gè)類型2驅(qū)動(dòng)程序的示例。

類型3:JDBC-Net 純 Java

在類型3驅(qū)動(dòng)程序中,一般用三層方法來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。JDBC 客戶端使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)套接字與中間件應(yīng)用服務(wù)器進(jìn)行通信。套接字的相關(guān)信息被中間件應(yīng)用服務(wù)器轉(zhuǎn)換為數(shù)據(jù)庫(kù)管理系統(tǒng)所要求的的調(diào)用格式,并轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)服務(wù)器。

這種驅(qū)動(dòng)程序是非常靈活的,因?yàn)樗恍枰诳蛻舳松习惭b代碼,而且單個(gè)驅(qū)動(dòng)程序能提供訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)。

你可以將應(yīng)用服務(wù)器作為一個(gè) JDBC “代理”,這意味著它會(huì)調(diào)用客戶端應(yīng)用程序。因此,你需要一些有關(guān)服務(wù)器配置方面的知識(shí),這樣可以高效地使用此驅(qū)動(dòng)程序類型。

你的應(yīng)用服務(wù)器可能使用類型1,2,或4驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)進(jìn)行通信,了解它們的細(xì)微之處將會(huì)很有幫助。

類型4:100%純 Java

在類型4驅(qū)動(dòng)程序中,一個(gè)純粹的基于 Java 的驅(qū)動(dòng)程序通過(guò) socket 連接與供應(yīng)商的數(shù)據(jù)庫(kù)進(jìn)行通信。這是可用于數(shù)據(jù)庫(kù)的最高性能的驅(qū)動(dòng)程序,并且通常由供應(yīng)商自身提供。

這種驅(qū)動(dòng)器是非常靈活的,你不需要在客戶端或服務(wù)端上安裝特殊的軟件。此外,這些驅(qū)動(dòng)程序是可以動(dòng)態(tài)下載的。

MySQL Connector/J 的驅(qū)動(dòng)程序是一個(gè)類型4驅(qū)動(dòng)程序。因?yàn)樗鼈兊木W(wǎng)絡(luò)協(xié)議的專有屬性,數(shù)據(jù)庫(kù)供應(yīng)商通常提供類型4的驅(qū)動(dòng)程序。

該使用哪種驅(qū)動(dòng)程序?

如果你正在訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),如 Oracle,Sybase 或 IBM,首選的驅(qū)動(dòng)程序是類型4。

如果你的 Java 應(yīng)用程序同時(shí)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)類型,類型3是首選的驅(qū)動(dòng)程序。

類型2驅(qū)動(dòng)程序是在你的數(shù)據(jù)庫(kù)沒(méi)有提供類型3或類型4驅(qū)動(dòng)程序時(shí)使用的。

類型1驅(qū)動(dòng)程序不被認(rèn)為是部署級(jí)的驅(qū)動(dòng)程序,它存在的目的通常僅用于開(kāi)發(fā)和測(cè)試。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)