早期的數據庫開發領域沒有通用的應用程序編程接口,開發人員在使用不同數據庫產品時,必須學習和使用廠商專用API,例如Oracle Call Interface、Microsoft Database Library等。針對業界對通用編程接口的需求,微軟推出了ODBC(Open Database Connectivity)方案,并獲得廠商和開發人員的認可。ODBC建立了一組規范,并提供了對數據庫訪問的標準API,后來被X/OPEN和ISO/IEC采納,作為SQL標準的一部分。
SUN參考了ODBC,為JAVA設計了專用的數據庫連接規范JDBC(JAVA Database Connectivity)。JDBC期望的目標是讓Java開發人員在編寫數據庫應用程序時,可以有統一的接口,無須依賴特定數據庫API,達到“?一次開發,適用所有數據庫”。雖然實際開發中,經常會因為使用了數據庫特定的語法、數據類型或函數等而無法達到目標,但JDBC的標準還是大大簡化了開發工作。
JDBC標準主要分為兩部分:面向應用開發人員的應用程序開發接口和面向數據庫驅動程序的開發者(通常是數據庫廠商)接口。JDBC標準中,按操作方式把驅動程序分為四種類型。
Type 1: JDBC-ODBC Bridge Driver

SUN發布JDBC規范時,市場上可用的JDBC驅動程序并不多,但是已經逐漸成熟的ODBC方案使得通過ODBC驅動程序幾乎可以連接所有類型的數據源。所以SUN發布了JDBC-ODBC的橋接驅動,利用現成的ODBC架構,將JDBC調用轉換為ODBC調用,避免了JDBC無驅動可用的尷尬。
不過,由于橋接的限制,并非所有功能都能直接轉換并正常調用,而多層調用轉換對速度也有一定的影響,除非沒有其他解決方案,否則不應采用橋接架構。
Type 2: Native API Driver

這類驅動程序會直接調用數據庫提供的原生鏈接庫或客戶端,因為沒有中間過程,訪問速度通常表現良好。但是驅動程序與數據庫和平臺綁定,無法達到JDBC跨平臺的基本目的。在JDBC規范中也是不被推薦的選擇。
Type 3: JDBC-Net Driver

這類驅動程序會將JDBC調用轉換為獨立于數據庫的協議,然后再通過特定的中間組件或服務器轉換為數據庫通信協議,主要目的是為了獲得更好的架構靈活性。例如更換數據庫時可通過更換中間組件實現。由非數據庫廠商開發的Type 3驅動通常還提供額外的功能,例如高級安全特性等,但通過中間服務器轉換也會對速度有一定影響。JDBC領域這種類型驅動并不常見,而微軟的ADO.NET是這種架構的典型。
Type 4: Native Protocol Driver

這是最常見的驅動程序類型,我們開發中使用的驅動jar包基本都屬于此類,通常由數據庫廠商直接提供,例如mysql-connector-java,驅動程序把JDBC調用轉換為數據庫特定的網絡通信協議。因為使用網絡通信,驅動程序可以純Java實現,支持跨平臺部署,性能也較好。
---------------------
作者:大雨將至
來源:CSDN
原文:https://blog.csdn.net/autfish/article/details/52170053
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
- 數據庫
- CAP定理
- 關系模型
- 關系數據庫
- NoSQL
- ODBC
- JDBC
- ODBC、JDBC和四種驅動類型
- mysql
- 安裝與配置
- CentOS 7 安裝 MySQL
- 優化
- 比較全面的MySQL優化參考
- 1、硬件層相關優化
- 1.1、CPU相關
- 1.2、磁盤I/O相關
- 2、系統層相關優化
- 2.1、文件系統層優化
- 2.2、其他內核參數優化
- 3、MySQL層相關優化
- 3.1、關于版本選擇
- 3.2、關于最重要的參數選項調整建議
- 3.3、關于Schema設計規范及SQL使用建議
- 3.4、其他建議
- 后記
- Mysql設計與優化專題
- ER圖,數據建模與數據字典
- 數據中設計中的范式與反范式
- 字段類型與合理的選擇字段類型
- 表的垂直拆分和水平拆分
- 詳解慢查詢
- mysql的最佳索引攻略
- 高手詳解SQL性能優化十條經驗
- 優化SQL查詢:如何寫出高性能SQL語句
- MySQL索引原理及慢查詢優化
- 數據庫SQL優化大總結之 百萬級數據庫優化方案
- 數據庫性能優化之SQL語句優化1
- 【重磅干貨】看了此文,Oracle SQL優化文章不必再看!
- MySQL 對于千萬級的大表要怎么優化?
- MySQL 數據庫設計總結
- MYSQL性能優化的最佳20+條經驗
- 數據操作
- 數據語句操作類型
- DCL
- 修改Mysql數據庫名的5種方法
- DML
- 連接
- 連接2
- DDL
- 數據類型
- 字符集
- 表引擎
- 索引
- MySQL理解索引、添加索引的原則
- mysql建索引的幾大原則
- 淺談mysql的索引設計原則以及常見索引的區別
- 常用工具簡介
- QA
- MySQL主機127.0.0.1與localhost區別總結
- 視圖(view)
- 觸發器
- 自定義函數和存儲過程的使用
- 事務(transaction)
- 范式與反范式
- 常用函數
- MySQL 數據類型 詳解
- Mysql數據庫常用分庫和分表方式
- 隔離級別
- 五分鐘搞清楚MySQL事務隔離級別
- mysql隔離級別及事務傳播
- 事務隔離級別和臟讀的快速入門
- 數據庫引擎中的隔離級別
- 事務隔離級別
- Innodb中的事務隔離級別和鎖的關系
- MySQL 四種事務隔離級的說明
- Innodb鎖機制:Next-Key Lock 淺談
- SQL函數和存儲過程的區別
- mongo
- MongoDB設置訪問權限、設置用戶
- redis
- ORM
- mybatis
- $ vs #
- mybatis深入理解(一)之 # 與 $ 區別以及 sql 預編譯
- 電商設計
- B2C電子商務系統研發——概述篇
- B2C電子商務系統研發——商品數據模型設計
- B2C電子商務系統研發——商品模塊E-R圖建模
- B2C電子商務系統研發——商品SKU分析和設計(一)
- B2C電子商務系統研發——商品SKU分析和設計(二)
- 數據庫命名規范--通用