2010-04-26 56 views
10

任何人都可以告訴我jdbc如何工作?它如何管理與DBMS溝通?因爲DBMS可能會使用其他編程語言編寫。jdbc如何工作

回答

1

wikipedia page

類型

There are commercial and free drivers available for most relational database servers. These drivers fall into one of the following types: 
Type 1 that calls native code of the locally available ODBC driver. 
Type 2 that calls database vendor native library on a client side. This code then talks to database over network. 
Type 3, the pure-java driver that talks with the server-side middleware that then talks to database 
Type 4, the pure-java driver that uses database native protocol 
2

大多數數據庫系統都支持ODBC(開放式數據庫連接或其它)。這意味着允許應用程序(例如Access)以一些性能影響爲代價來處理多個RDBMS實現。 JDBC第一次發佈時,有一個驅動程序允許您連接到ODBC提供程序。稍後,一些供應商提供了特定於其RDMS的JDBC驅動程序。

從開發人員的角度來看,JDBC被用作一組接口。加載驅動程序時隱藏所有實際的細節。該驅動程序是一個Java類,可以使用本書的任何技巧,包括本地代碼或僅將網絡流量發送到RDBMS。

5

Wikipedia

JDBC驅動程序是轉換請求從Java程序 到了DBMS可以理解的協議客戶端適配器(安裝在客戶端 機器上,而不是在服務器上)。類型

有大多數關係數據庫服務器的商業和免費驅動程序可用 。這些驅動程序可能屬於以下類型之一:

  • 類型1調用本地可用的ODBC驅動程序的本機代碼。
  • 類型2調用客戶端上的數據庫供應商本機庫。此代碼然後通過網絡與數據庫進行通話。
  • 類型3,與服務器側中間件說話的純Java驅動程序,然後會談到數據庫
  • 類型4中,使用數據庫本地協議
+1

根據上述回答,JDBC驅動程序將JDBC API調用轉換爲DBMS可以理解的協議;那是什麼協議?該協議定義是否可用,以便我們可以看看? – CuriousMind 2014-11-13 14:01:09

1

維基百科純Java驅動:

JDBC是Java編程語言的API,它定義了客戶端如何訪問數據庫。它提供了查詢和更新數據庫中數據的方法。 JDBC面向關係數據庫。

JDBC首次在Java 2平臺標準版1.1版(J2SE)中引入,與參考實現JDBC到ODBC橋一起引入,從而實現與JVM主機環境中任何ODBC可訪問數據源的連接。

不需要太多細節,您可以將JDBC視爲一種抽象層,讓您可以與不同的數據庫進行通信。特定於實現的細節對您來說是隱藏的,但用於查詢數據庫的接口(無論是MySQL還是Oracle或其他)都是相同的。

這意味着,在未來,如果有一個新的數據庫,有人只需要使用現有的接口。方法名稱是相同的,但方法將包含特定數據庫的特定於實現的代碼。這是一種常見的軟件工程模式。

包含具體的實現代碼被稱爲JDBC driver實體。 JDBC驅動程序提供到數據庫的連接,並且還實現了將查詢發送到數據庫以及將結果集發送回客戶端的特定協議。

7

與數據庫的通信是通過JDBC驅動程序,可以使用各種策略來「說話」到數據庫(從「翻譯」,以使用「本機」語言)來處理。根據所使用的策略,司機分爲4種類型。 Types of JDBC technology drivers提供它們中的每一個很好的描述:

  1. 甲JDBC-ODBC橋經由一個或多個ODBC 驅動程序提供JDBC API訪問。請注意,某些ODBC本機 代碼和許多情況下本機數據庫 客戶端代碼必須加載到使用此類型 驅動程序的每個 客戶端計算機上。因此,這種類型的驅動程序是 一般是最適當的時候 自動安裝和下載的Java技術應用的 是 並不重要。有關 Sun提供的 JDBC-ODBC橋驅動程序的信息,請參閱JDBC-ODBC橋驅動程序。

  2. 一個本地API部分Java技術的驅動器轉換 JDBC調用轉換成針對甲骨文,SYBASE的Informix,DB2, 或其他DBMS客​​戶 API調用。請注意,與 網橋驅動程序類似,此類驅動程序 要求在每臺客戶端計算機上加載一些二進制代碼爲 。

  3. 淨協議的完全支持Java技術的驅動器轉換 JDBC API調用轉換成獨立於DBMS的 網協議,然後由服務器翻譯 到DBMS協議。這 網絡服務器中間件能夠 所有其Java 技術爲基礎的客戶端連接到許多 不同的數據庫。具體使用的 協議取決於供應商。通常,這是最靈活的 JDBC API替代方案。這很可能是 該解決方案的所有供應商將提供適合內部網 使用的產品 。爲了使這些產品 還支持上網就必須 辦理 安全性,通過防火牆訪問, 等額外要求,即在Web規定。有幾家供應商正在將基於技術的驅動程序添加到其現有的數據庫中間件產品中。

  4. 一個土生土長的協議完全支持Java技術的驅動器轉換 JDBC技術要求成的DBMS直接使用的網絡 協議。這個 允許從客戶端 機器到DBMS服務器的直接調用,並且是用於內部網絡 訪問的 實用解決方案。由於這些協議中的許多協議是專有的,因此數據庫供應商 本身將成爲此類驅動程序的主要來源 。有幾個 數據庫供應商有這些在 的進展。

正如我們可以看到的,有不同的策略,使互操作性可能的,包括實現在爪哇(類型4)中使用由給定數據庫中的網絡協議。由於它們的易用性(沒有額外的東西安裝,沒有JNI)和它們的良好性能(現在它們的性能和2型驅動程序一樣好),4型實際上是現今最常用的。

0

不能說我知道你的問題的確切答案,但這裏有一些信息可以幫助。

這裏是一個偉大的地方開始:

http://java.sun.com/products/jdbc/overview.html

的JDBC API包含的接口兩大組:第一是程序編寫者的JDBC API,第二個是低級別驅動程序編寫者的JDBC驅動程序API。

JDBC驅動程序開發人員信息。基本上有一個開發人員實現的一組接口,用於爲特定的DBMS創建JDBC驅動程序。

http://java.sun.com/products/jdbc/driverdevs.html

至於一個DBMS被寫在不同的語言。該數據庫管理系統很可能會暴露一些允許JDBC等驅動程序與DBMS通信的API(使用各種語言和/或格式)。