JDBC 驅動程序類型

什么是 JDBC 驅動

說白了 JDBC 驅動就是一組實現了 JDBC API 接口的 Java 類的集合,該接口用于與數據庫服務器進行交互。例如,使用 JDBC 驅動程序可以讓你打開數據庫連接,并通過發送 SQL 或數據庫命令,然后通過 Java 接收結果。

JDK 中的 java.sql 包中定義了各種數據庫操作相關的接口,這些接口的實現類交由第三方驅動程序中完成。第三方供應商在他們的數據庫驅動程序中都實現了 java.sql.Driver 接口。

四種類型

以下四種類型的定義摘自維基百科
Type 1 : JDBC-ODBC bridge
Type 2 : Native-API driver
Type 3 : Network-Protocol driver (Middleware driver)
Type 4 : Database-Protocol driver (Pure Java driver) or thin driver

類型1:JDBC-ODBC 橋

在類型1中,一個 JDBC 橋接器是用來訪問安裝在每個客戶機上的 ODBC 驅動程序。為了使用 ODBC,需要在目標數據庫上配置系統數據源名稱(DSN)。這種類型的驅動把所有 JDBC 的調用傳遞給ODBC,再讓后者調用數據庫的本地驅動代碼。在 Java 剛出來的時候,這是一種很有用的方式,因為那時大多數的數據庫只支持 ODBC 訪問,但現在此類型的驅動程序僅適用于實驗用途或在沒有其他選擇的情況。

Type 1
  1. 優點:
    易于使用。
    只要有對應的 ODBC 驅動(大多數數據庫廠商都會提供),所以幾乎可以訪問所有的數據庫。

  2. 缺點:
    執行效率比較低,不適合大數據量訪問的應用。
    需要客戶端預裝對應的 ODBC 驅動。

類型2:本地 API 驅動

在類型2中,JDBC API 調用轉換成原生的 C/C++ API 的本地調用,這對于數據庫來說具有唯一性。這些驅動程序通常由數據庫供應商提供,并和 JDBC-ODBC 橋驅動程序的使用方式一樣。該供應商的驅動程序同樣必須安裝在每臺客戶機上。

Type 2
  1. 優點:
    速度快于Type 1(但比不上Type 3、Type 4)。

  2. 缺點:
    需要客戶端預裝對應的數據庫廠商代碼庫。
    預裝的代碼庫不是通用的,每家廠商各自獨立,所以也依賴于數據庫廠商。

類型3:網絡協議驅動

在類型3中,JDBC 先把對數據庫的訪問請求傳遞給中間件服務器。中間件服務器再把請求翻譯為符合數據庫規范的調用,再把這種調用傳給數據庫服務器。如果中間件服務器也是用 java 開發的,那么在在中間層也可以使用Type 1、Type 2 這兩種 JDBC 驅動方式訪問數據庫。

Type 3
  1. 優點:
    不需要在客戶端加載數據庫廠商提供的代碼庫。
    單個驅動程序可以對多個數據庫進行訪問,可擴展性較好。
    支持數據庫連接、查詢結果的緩存,負載均衡,日志,監控等。

  2. 缺點:
    在中間件層仍需對最終數據進行配置。
    由于多出一個中間件層,速度不如 Type 4。

類型4:數據庫協議驅動

類型4是純粹的基于 Java 的驅動程序,通過 Socket 連接與廠商的數據庫進行通信。這是可用于數據庫的最高性能的驅動程序,并且通常由廠商自身提供。

Type 4

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

MySQL Connector/J 的驅動程序是一個 Type 4。因為它們的網絡協議的專有屬性,數據庫供應商通常提供 Type 4的驅動程序。

  1. 優點:
    平臺獨立的。
    相比于前三種方式不需要中間的媒介。
    應用程序直接同數據庫服務器通信。
    訪問速度最快。
    這是最直接、最純粹的 Java 實現。

  2. 缺點:
    幾乎只有數據庫廠商自己才能提供這種類型的JDBC驅動。
    需要針對不同的數據庫使用不同的驅動程序。

如何選擇

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

如果你的 Java 應用程序同時訪問多個數據庫類型,首選的是類型3。

類型2是在你的數據庫沒有提供類型3或類型4驅動程序時使用的。

類型1被認為不適合在生產種使用,它存在的目的通常僅用于開發和測試。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內容