更新時間:2021-10-25 11:23:12 來源:動力節點 瀏覽1286次
一個JDBC驅動程序是一個軟件組件使得Java的應用程序與互動數據庫。JDBC 驅動程序類似于ODBC 驅動程序、ADO.NET 數據提供程序和OLE DB 提供程序。
要連接單個數據庫,JDBC(Java 數據庫連接API)需要每個數據庫的驅動程序。JDBC 驅動程序發出與數據庫的連接,并實現在客戶端和數據庫之間傳輸查詢和結果的協議。
JDBC 技術驅動程序屬于四類之一。
JDBC-ODBC 橋接
本機 API 驅動程序
網絡協議驅動程序(中間件驅動程序)
數據庫協議驅動程序(純 Java 驅動程序)或瘦驅動程序。
JDBC 1 類驅動程序,也稱為JDBC-ODBC 橋接器,是一種數據庫驅動程序實現,它使用ODBC驅動程序連接到數據庫。驅動程序將 JDBC 方法調用轉換為 ODBC 函數調用。
該驅動程序,因為它利用ODBC的這又依賴于底層的本地庫依賴于平臺的操作系統的JVM是在運行。此外,使用此驅動程序會導致其他安裝依賴項;例如,安裝了該驅動程序的計算機上必須安裝ODBC,并且數據庫必須支持ODBC 驅動程序。如果有純 Java 驅動程序的替代品可用,則不鼓勵使用此驅動程序。另一個含義是,鑒于驅動程序和平臺之間的綁定,使用類型 1 驅動程序的任何應用程序都是不可移植的。該技術不適合高交易環境。類型 1 驅動程序也不支持完整的 Java 命令集,并且受到 ODBC 驅動程序功能的限制。
Sun(現在是 Oracle)提供了一個 JDBC-ODBC 橋驅動程序:sun.jdbc.odbc.JdbcOdbcDriver. 此驅動程序是本機代碼而不是 Java,并且是封閉源代碼。Sun 的/Oracle 的 JDBC-ODBC Bridge 在 Java 8 中被刪除(其他供應商的可用)。
如果已編寫驅動程序以便加載它會導致創建一個實例并DriverManager.registerDriver使用該實例作為參數進行調用,則它位于 DriverManager 的驅動程序列表中并可用于創建連接。
有時可能會出現多個 JDBC 驅動程序能夠連接到給定 URL 的情況。例如,當連接到給定的遠程數據庫時,可以使用 JDBC-ODBC 橋驅動程序、JDBC-to-generic-network-protocol 驅動程序或數據庫供應商提供的驅動程序。在這種情況下,測試驅動程序的順序很重要,因為 DriverManager 將使用它找到的第一個可以成功連接到給定 URL 的驅動程序。
首先,DriverManager 嘗試按照注冊的順序使用每個驅動程序。(jdbc.drivers 中列出的驅動程序總是首先注冊。)它將跳過任何不受信任的代碼的驅動程序,除非它們是從與嘗試打開連接的代碼相同的源加載的。
它通過依次調用每個驅動程序的 Driver.connect 方法來測試驅動程序,并將用戶最初傳遞給方法的 URL 傳遞給它們DriverManager.getConnection。識別 URL 的第一個驅動程序建立連接。
優點
幾乎任何安裝了 ODBC 驅動程序的數據庫都可以訪問,并且可以檢索數據。
缺點
性能開銷,因為調用必須通過 JDBC(java 數據庫連接)橋接至 ODBC(開放數據庫連接)驅動程序,然后到達本機數據庫連接接口(因此可能比其他類型的驅動程序慢)。
需要在客戶端計算機上安裝 ODBC 驅動程序。
不適合小程序,因為客戶端需要安裝ODBC驅動。
特定的 ODBC 驅動程序并不總是適用于所有平臺;因此,此驅動程序的可移植性受到限制。
JDK 1.8 (Java 8) 不支持。
JDBC 類型 2 驅動程序,也稱為Native-API 驅動程序,是一種使用數據庫客戶端庫的數據庫驅動程序實現。驅動程序將JDBC方法調用轉換為數據庫 API 的本機調用。例如:Oracle OCI 驅動程序是類型 2 驅動程序。
優點
由于沒有 JDBC-ODBC 橋的實現,它可能比 Type 1 驅動程序快得多。
缺點
需要在客戶端計算機上安裝供應商客戶端庫。
并非所有數據庫都有客戶端庫。
此驅動程序依賴于平臺。
此驅動程序支持除小程序以外的所有 Java 應用程序。
JDBC 類型 3 驅動程序,也稱為數據庫中間件的純 Java 驅動程序,是一種數據庫驅動程序實現,它利用調用程序和數據庫之間的中間層。中間層(應用程序服務器)將JDBC調用直接或間接轉換為特定于供應商的數據庫協議。
這與類型 4 驅動程序的不同之處在于協議轉換邏輯不在客戶端,而是在中間層。與類型 4 驅動程序一樣,類型 3 驅動程序完全用 Java 編寫。
同一個客戶端 JDBC 驅動程序可以用于多個數據庫。這取決于中間件配置為支持的數據庫數量。類型 3 驅動程序與平臺無關,因為與平臺相關的差異由中間件處理。此外,利用中間件提供了額外的安全和防火墻訪問優勢。
函數
將 JDBC API 調用發送到中間層網絡服務器,該服務器將調用轉換為 DBMS 特定的網絡協議。然后將轉換后的調用發送到特定的 DBMS。
遵循三層通信方法。
可以連接到多個數據庫——不是特定于供應商的。
用 java 編寫的 JDBC Client 驅動程序使用獨立于數據庫的協議與中間件網絡服務器通信,然后該網絡服務器將此請求轉換為該數據庫的數據庫命令。
因此,客戶端驅動程序與中間件通信是獨立于數據庫的。
優點
由于客戶端和中間件服務器之間的通信是獨立于數據庫的,因此客戶端上不需要數據庫供應商庫。無需為新數據庫更改客戶端。
中間件服務器(可以是成熟的 J2EE 應用程序服務器)可以提供典型的中間件服務,如緩存(連接、查詢結果等)、負載平衡、日志記錄和審計。
單個驅動程序可以處理任何數據庫,前提是中間件支持它。
例如:IDA 服務器
缺點
需要在中間層完成特定于數據庫的編碼。
添加的中間件層可能會導致額外的延遲,但通??梢酝ㄟ^使用更好的中間件服務來克服。
JDBC 類型 4 驅動程序,也稱為 Direct to Database Pure Java Driver,是一種數據庫驅動程序實現,可將JDBC調用直接轉換為特定于供應商的數據庫協議。
4 類驅動程序完全用Java編寫,因此與平臺無關。它們安裝在客戶端的Java 虛擬機中。這提供了比類型 1 和類型 2 驅動程序更好的性能,因為它沒有將調用轉換為 ODBC 或數據庫 API 調用的開銷。與類型 3 驅動程序不同,它不需要相關軟件即可工作。
由于數據庫協議是特定于供應商的,JDBC 客戶端需要單獨的驅動程序(通常由供應商提供)來連接到不同類型的數據庫。
優點
完全用Java實現以實現平臺獨立性。
這些驅動程序不會將請求轉換為中間格式(例如 ODBC)。
客戶端應用程序直接連接到數據庫服務器。不使用翻譯或中間件層,提高了性能。
JVM 可以管理應用程序到數據庫連接的所有方面;這樣可以方便調試。
缺點
驅動程序是特定于數據庫的,因為不同的數據庫供應商使用廣泛不同的(通常是專有的)網絡協議。
如果大家想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面有更豐富的內容在等著大家學習,相信對大家會有所幫助的。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習