JDBC 驅(qū)動類型

2018-09-28 19:58 更新

驅(qū)動類型

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

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

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

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

JDBC 驅(qū)動程序類型

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

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

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

當 Java 剛出來時,這是一個很有用的驅(qū)動程序,因為大多數(shù)的數(shù)據(jù)庫只支持 ODBC 訪問,但現(xiàn)在此類型的驅(qū)動程序僅適用于實驗用途或在沒有其他選擇的情況。

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

類型2:JDBC-Native API

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

如果我們改變了當前數(shù)據(jù)庫,我們必須改變原生 API ,因為它是具體到某一個數(shù)據(jù)庫,并且他們大多已經(jīng)失效了。即使這樣用類型2驅(qū)動程序也能提高一些速度,因為他消除了 ODBC 的開銷。

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

類型3:JDBC-Net 純 Java

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

這種驅(qū)動程序是非常靈活的,因為它不需要在客戶端上安裝代碼,而且單個驅(qū)動程序能提供訪問多個數(shù)據(jù)庫。

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

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

類型4:100%純 Java

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

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

MySQL Connector/J 的驅(qū)動程序是一個類型4驅(qū)動程序。因為它們的網(wǎng)絡(luò)協(xié)議的專有屬性,數(shù)據(jù)庫供應(yīng)商通常提供類型4的驅(qū)動程序。

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

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

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

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

類型1驅(qū)動程序不被認為是部署級的驅(qū)動程序,它存在的目的通常僅用于開發(fā)和測試。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號