Java系列之JDBC和ODBC之間的差別與聯系


JDBC簡單介紹

JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於運行SQL語句的Java API,它是Java十三個規范之中的一個。能夠為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基准。據此能夠構建更高級的工具和接口。使數據庫開發者能夠編寫數據庫應用程序,同一時候。JDBC也是個商標名。

ODBC簡單介紹

開放數據庫互連(Open Database Connectivity。ODBC)是微軟公司開放服務結構(WOSA。Windows Open Services Architecture)中有關數據庫的一個組成部分,它建立了一組規范,並提供了一組對數據庫訪問的標准API(應用程序編程接口)。這些API利用SQL來完畢其大部分任務。

ODBC本身也提供了對SQL語言的支持。用戶能夠直接將SQL語句送給ODBC。開放數據庫互連(ODBC)是Microsoft提出的數據庫訪問接口標准。開放數據庫互連定義了訪問數據庫API的一個規范,這些API獨立於不同廠商的DBMS,也獨立於詳細的編程語言(可是Microsoft的ODBC文檔是用C語言描寫敘述的,很多實際的ODBC驅動程序也是用C語言寫的。)ODBC規范后來被X/OPEN和ISO/IEC採納。作為SQL標准的一部分,詳細內容能夠參看《ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相關的標准文件。

兩者之間的聯系

JDBC和ODBC都是用來連接數據庫的啟動程序。JDBC和ODBC因為具有數據庫獨立性甚至平台無關性,因而對Internet上異構數據庫的訪問提供了非常好的支持。

兩者之間的差別

1.JDBC比ODBC更easy理解

從事編程工作的朋友都知道Java比C語言更好學,主要是由於Java語言是面向對象的更接近人的思維認識。更easy被人接受。而C語言就較為抽象,跟人的認識思維相差較大,其開發出來的產品也具有類似特點。在ODBC中一個的簡單的查詢。也需求分為好幾塊內容;而在ODBC驅動程序內部再去整合,做一些復雜的操作。這不僅減少了數據庫啟動程序的性能,並且也給程序開發人員開發實際運用程序帶來了確定的負面效果。

而JDBC數據庫啟動程序在設計的時間就包括了大部份基本數據操作功能,為此在編寫一些常規的數據庫操作語句時,如查詢、更新等等,其所需求的源碼比 ODBC要少的多。故從這方面來說。JDBC數據庫啟動程序要比ODBC簡易理解。

2.JDBC數據庫驅動程序是面向對象的

JDBC全然遵循Java語言的優良特性。

通常情況下,僅僅要有Java功能需設計基礎的用戶都能在最短時間內了解JDBC驅動程序的架構,較量簡易上手,能輕而易舉的開發出強悍的數據庫實際運用程序。

而ODBC的話。因為其內部功能復雜,源碼編寫要求高。為此即使是一個的C語言的高手,仍然需求花費不少的時間去了解那個數據庫啟動程序;在編寫源碼的時間,還離不開有關的參考書本。

3.JDBC的移植性要比ODBC要好。

通常情況下,安裝完ODBC驅動程序之后。還需求經過確定的配置才可以應用。而不同樣的配置在不同樣數據庫server之間不可以通用。也那是說,裝一次需求配置一次。可是JDBC數據庫驅動程序則不同樣。

假如採用JDBC數據庫驅動程序的話,則僅僅須要選取適當的 JDBC數據庫驅動程序,就不須要額外的配置。在安裝過程中,JDBC數據庫驅動程序會自己完畢有關的配置。為此JDBC的移植性要比ODBC要好。

從ODBC向JDBC過度

或許數據庫編程曾經採用的是ODBC驅動程序。而假如數據庫編程眼下須要採用JDBC驅動程序,那么是否能出現順利過渡呢?

答案是肯定的。

在JDBC驅動程序中有一類叫作JDBC-ODBC橋接啟動程序。這樣的類別的JDBC數據庫驅動程序其底層是經過ODBC驅動程序來連接數據庫的。

假如原先的實際運用程序是基於ODBC數據庫驅動程序的,或者數據庫沒有幫助相應的JDBC驅動程序,則數據庫編程能利用JDBC-ODBC橋接驅動程序來實現。也那是說。橋接驅動程序能利用現有的ODBC驅動程序來存取聯系型數據庫。為此者不僅能保留先前的開發架構(經過ODBC來存取數據),還能馬上應用Java作為新的開發環境,從而出現ODBC數據庫驅動程序到JDBC的順利轉型。

只是在採用這樣的橋接驅動程序的時間,需求留意幾個難點。一是那個橋接驅動程序仍然須要用到ODBC數據庫驅動程序。

因為橋接驅動程序直接聯系的對象是ODBC驅動程序。然后再經過ODBC驅動程序去訪問數據庫。為此在client必需先安裝並配置好ODBC驅動程序。假如採用的是三層式的開發框架,也需求安裝ODBC驅動程序。其次,在這樣的模式下。實際運用程序先調用JDBC,然后再經過JDBC調用ODBC。最后再跟數據庫通信。

顯然當中間多了幾個環節。因為當中間環節較量多,但數據訪問出現難點的時候,就不太好查難點。這就好像一道水管,假如中間的接口多了的話,則除了漏水的幾率就較量高。假如真的除了漏水的話。則查詢漏水點的時間也會較量困難。為此筆者以為。採用橋接類別的JDBC驅動程序僅僅是權宜之計。在適當的時間,數據庫開發還是須要調整原先的開發架構,所有都轉到JDBC驅動程序上來。

橋接程序僅僅是為數據庫開發爭取確定的時間。盡管那個轉型過程中的陣痛是較痛的,但確是不可避免的。長痛不如短痛,筆者意見數據庫開發還是及早停止過渡為好。並在預計的情況下,把曾經的開發架構也停止調整,以採用真正意義上的JDBC驅動程序。

JDBC盡管在一定程度上比ODBC操作簡單,easy理解。可是世間萬物存在即有道理。並非說JDBC好就全部的情況下都能使用JDBC,兩者之間沒有好壞之分,僅僅是在特定的情況下可以選取合適的實現方式就可以。參考文章http://blog.sina.com.cn/s/blog_4cf8aad30100lx47.html(貌似博主是翻譯過來的,好多字詞用得不太合適,理解起來有些困難,本人結合自己的認識做了替換)個人的一點點認識和整理。有不足之處請大家批評指正。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM