標籤:java jdbc
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)。這些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更容易理解
從事編程工作的朋友都知道Java比C語言更好學,主要是因為Java語言是物件導向的更接近人的思維認識,更容易被人接受。而C語言就較為抽象,跟人的認識思維相差較大,其開發出來的產品也具有類似特點。在ODBC中一個的簡單的查詢,也需求分為好幾塊內容;而在ODBC驅動程式內部再去整合,做一些複雜的操作。這不僅降低了資料庫啟動程式的效能,而且也給程式開發人員開發實際運用程式帶來了確定的負面效果。而JDBC資料庫啟動程式在設計的時間就包含了大部份基本資料操作功能,為此在編寫一些常規的資料庫動作陳述式時,如查詢、更新等等,其所需求的原始碼比 ODBC要少的多。故從這方面來說,JDBC資料庫啟動程式要比ODBC簡易理解。
2.JDBC資料庫驅動程式是物件導向的
JDBC完全遵循Java語言的優良特性。通常情況下,只要有Java功能需設計基礎的使用者都能在最短時間內瞭解JDBC驅動程式的架構,較量簡易上手,能輕而易舉開發出強悍的資料庫實際運用程式。而ODBC的話,由於其內部功能複雜,原始碼編寫要求高。為此即使是一個的C語言的高手,仍然需求花費不少的時間去瞭解那個資料庫啟動程式;在編寫原始碼的時間,還離不開有關的參考書本。
3.JDBC的移植性要比ODBC要好。
通常情況下,安裝完ODBC驅動程式之後,還需求經過確定的配置才能夠應用。而不相同的配置在不相同資料庫伺服器之間不能夠通用。也那是說,裝一次需求配置一次。但是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驅動程式去訪問資料庫。為此在用戶端必需先安裝並配置好ODBC驅動程式。假如採用的是三層式的開發架構,也需求安裝ODBC驅動程式。其次,在這種模式下,實際運用程式先調用JDBC,然後再經過JDBC調用ODBC,最後再跟資料庫通訊。顯然其中間多了幾個環節。由於其中間環節較量多,但資料訪問出現痛點的時候,就不太好查痛點。這就好像一道水管,假如中間的介面多了的話,則除了漏水的幾率就較量高。假如真的除了漏水的話,則查詢漏水點的時間也會較量困難。為此筆者以為,採用橋接類別的JDBC驅動程式只是權宜之計。在適當的時間,資料庫開發還是需要調整原先的開發架構,全部都轉到JDBC驅動程式上來。橋接程式只是為資料庫開發爭取確定的時間。雖然那個轉型過程中的陣痛是較痛的,但確是不可避免的。長痛不如短痛,筆者意見資料庫開發還是及早停止過渡為好。並在估計的情況下,把以前的開發架構也停止調整,以採用真正意義上的JDBC驅動程式。
JDBC雖然在一定程度上比ODBC操作簡單,容易理解。但是世間萬物存在即有道理,並不是說JDBC好就所有的情況下都能使用JDBC,兩者之間沒有好壞之分,只是在特定的情況下能夠選取合適的實現方式即可。參考文章http://blog.sina.com.cn/s/blog_4cf8aad30100lx47.html(貌似博主是翻譯過來的,好多字詞用得不太合適,理解起來有些困難,本人結合自己的認識做了替換)個人的一點點認識和整理,有不足之處請大家批評指正。
Java系列之JDBC和ODBC之間的區別與聯絡