JDBCドライバは、Javaアプリケーションがデータベースと対話できるようにするソフトウェアコンポーネントです。[ 1 ] JDBCドライバは、 ODBCドライバ、ADO.NETデータプロバイダ、OLE DBプロバイダに類似しています。
個々のデータベースに接続するには、JDBC(Java Database Connectivity API)で各データベース用のドライバが必要です。JDBCドライバはデータベースへの接続を提供し、クライアントとデータベース間でクエリと結果を転送するためのプロトコルを実装します。
JDBCテクノロジードライバーは4つのカテゴリのいずれかに分類されます。[ 2 ]

JDBC Type 1 ドライバ(JDBC-ODBC ブリッジとも呼ばれます)は、 ODBCドライバを使用してデータベースに接続する データベースドライバ実装です。このドライバは、JDBC メソッド呼び出しを ODBC 関数呼び出しに変換します。
このドライバーはODBCを使用するため、プラットフォームに依存します。ODBCは、JVMが動作するオペレーティングシステムのネイティブライブラリに依存します。また、このドライバーを使用すると、他のインストール依存関係も発生します。例えば、ドライバーがインストールされているコンピュータにODBCがインストールされている必要があり、データベースもODBCドライバーをサポートしている必要があります。純粋なJavaドライバーを使用できる場合は、このドライバーの使用は推奨されません。また、ドライバーとプラットフォーム間のバインディングを考慮すると、Type 1ドライバーを使用するアプリケーションは移植性がありません。このテクノロジーは、高トランザクション環境には適していません。また、Type 1ドライバーはJavaコマンドセットを完全にサポートしておらず、ODBCドライバーの機能によって制限されます。
Sun(現Oracle)はJDBC-ODBCブリッジドライバを提供していましたsun.jdbc.odbc.JdbcOdbcDriver。このドライバはネイティブコードであり、Javaではなく、クローズドソースです。Sun/OracleのJDBC-ODBCブリッジはJava 8で削除されました(他のベンダーのドライバは利用可能です)。[ 3 ] [ 4 ] [ 5 ] [ 6 ]
ドライバが、ロードするとインスタンスが作成され、DriverManager.registerDriverそのインスタンスをパラメータとして呼び出すように記述されている場合、そのドライバは DriverManager のドライバ リストに含まれ、接続の作成に使用できます。
複数のJDBCドライバが特定のURLに接続できる場合があります。例えば、特定のリモートデータベースに接続する場合、JDBC-ODBCブリッジドライバ、JDBCから汎用ネットワークプロトコルへのドライバ、あるいはデータベースベンダーが提供するドライバのいずれかを使用できる可能性があります。このような場合、DriverManagerは指定されたURLに正常に接続できる最初のドライバを見つけるため、ドライバのテスト順序が重要になります。
まず、DriverManager は登録順に各ドライバを使用しようとします (jdbc.drivers にリストされているドライバは常に最初に登録されます)。接続を開こうとしているコードと同じソースからロードされていない限り、信頼できないコードのドライバはスキップされます。
ドライバーをテストするために、各ドライバーに対して Driver.connect メソッドを順番に呼び出し、ユーザーがメソッドに渡した URL を渡しますDriverManager.getConnection。URL を認識した最初のドライバーが接続を確立します。

JDBC Type 2ドライバ(ネイティブAPIドライバとも呼ばれる)は、データベースのクライアント側ライブラリを使用するデータベースドライバ実装です。このドライバは、JDBCメソッド呼び出しをデータベースAPIのネイティブ呼び出しに変換します。例えば、Oracle OCIドライバはType 2ドライバです。

JDBC Type 3ドライバは、データベースミドルウェア用のPure Javaドライバとも呼ばれ、[ 7 ] 、呼び出し元プログラムとデータベースの間に中間層を設けるデータベースドライバ実装です。中間層(アプリケーションサーバー)は、JDBC呼び出しを直接的または間接的にベンダー固有のデータベースプロトコルに変換します。
タイプ4ドライバとの違いは、プロトコル変換ロジックがクライアントではなく中間層にあることです。タイプ4ドライバと同様に、タイプ3ドライバは完全にJavaで記述されています。
同じクライアント側JDBCドライバを複数のデータベースで使用できます。これは、ミドルウェアがサポートするように設定されているデータベースの数によって異なります。Type 3ドライバはプラットフォームに依存しません。プラットフォーム固有の差異はミドルウェアによって処理されます。また、ミドルウェアを利用することで、セキュリティとファイアウォールアクセスの面でさらなるメリットが得られます。

JDBC タイプ 4 ドライバー (Direct to Database Pure Java ドライバーとも呼ばれます) は、 JDBC呼び出しをベンダー固有のデータベースプロトコルに直接変換するデータベース ドライバー実装です。
タイプ4ドライバは完全にJavaで記述されているため、プラットフォームに依存しません。クライアントのJava仮想マシン内にインストールされます。ODBCまたはデータベースAPI呼び出しへの変換によるオーバーヘッドがないため、タイプ1およびタイプ2ドライバよりも優れたパフォーマンスが得られます。タイプ3ドライバとは異なり、動作に必要な関連ソフトウェアは必要ありません。
データベース プロトコルはベンダー固有であるため、JDBC クライアントは、異なる種類のデータベースに接続するために、通常はベンダーが提供する個別のドライバーを必要とします。
-ODBCブリッジは、タイプ1とタイプ3の両方の形式で提供されており、JDBC 1向けのオリジナルリリース以来、定期的に更新されています。