JDBCの基礎知識 |
|
JDBCドライバは、その実装方式から4つのタイプに分類されています。なぜ、4つもタイプがあるのでしょうか? それぞれのタイプにはどういった違いがあり、開発者はどういった点を考慮する必要があるのでしょうか? ここでは、これら4つのタイプについてそれぞれの特徴を見ていきます。
■TYPE1:JDBC-ODBCブリッジドライバ
このドライバは、JDBC APIの呼び出しをODBC API呼び出しに変換するブリッジコンポーネントで、Windows用とSolaris用のドライバはJDKに付属しています。ODBCドライバを経由してDBMSに接続することになるので、JDBC-ODBCドライバを使用するクライアントマシンにODBCドライバがインストールされていることが必須となります。
特徴としては、ODBCを経由することによりODBCに対応する多くのDBMSを利用することができ、既存のシステムを利用する際に、JDBCに対応しているかどうかに煩わされることはありません。しかし、ネイティブなコードを一部含むので、アプレットのようにネットワークを介してダウンロードして使用することはできません。あらかじめ必要なものはクライアントマシンにインストールしておく必要があります。従って、このドライバは、クライアントマシンのソフトウェア管理やコントロールが大きな問題にならない企業ネットワークなどで使用する場合に適します。
![]() |
■TYPE2:ネイティブブリッジドライバ
このドライバは、JDBC APIの呼び出しをDBMS固有のクライアントAPI呼び出しに変換します。例えば、OracleではNet8、InformixではI-Connect、SybaseではOpenClientによりDBMSへ接続することになります。ドライバの主な供給元は、DBMSへの接続ミドルウェアのベンダになります。
これらのベンダ依存のネットワークライブラリは、各クライアントにインストールされていなければなりません。従って、JDBC-ODBCブリッジドライバと同様に、このドライバもネイティブなコードを含むことになり、アプレットのようにネットワークを介してダウンロードして使用することはできません。あらかじめ必要なものはクライアントマシンにインストールしておく必要があるので、クライアントマシンのソフトウェア管理やコントロールの問題があります。
![]() |
TYPE1、TYPE2のドライバは100% Pure Javaでないために、Java本来の利点である自動インストールや「Write Once, Run Anywhere(一度書いたプログラムがどこでも動く)」を実現することができません。これらはPure Javaドライバがまだ使用可能でない間の過渡的なソリューションであるとされています。以前はODBC対応のDBMSが豊富であったことと、JDKに付属されていたためにTYPE1が最もポピュラーなドライバでした。しかし、現在では多くのベンダがPure Javaドライバを供給するようになり、その座は下記のPure Javaドライバに取って代わられました。
■TYPE3:ネットプロトコルドライバ
このタイプは、JDBCドライバの形態の中で最も柔軟性を持つソリューションです。接続形態は、中継サーバがPure JavaドライバとDBMSを仲介する構成になります。中継サーバはクライアントとなるドライバを多種類のDBMSに接続できます。
ドライバ部分は、JDBC APIをDBMSに依存しないネットプロトコルに変換し、中継サーバに接続します。中継サーバは、ネットプロトコルをDBMS特有のプロトコルに変換し、ドライバとDBMSとの接続を仲介します。ドライバと中継サーバ間で使用されるネットプロトコルは、中継サーバを提供するベンダ独自のものとなり、ドライバ自体の主な供給元も中継サーバを供給するベンダになります。
このドライバ部分にはネイティブなコードは含まれないので、ネットワークを介してダウンロードして使用することができます。また、一般に主要な処理は中継サーバが行うことになるのでドライバ部分の処理は単純化でき、そのプログラムサイズは軽量になります。
中継サーバプログラム自体は、Pure Javaである必要はありません。
![]() |
■TYPE4:ネイティブプロトコルドライバ
TYPE4のドライバは、Pure JavaドライバでJDBC呼び出しを直接DBMS固有のネットワークプロトコルに変換します。これにより、クライアントマシンからDBMSサーバへの直接接続が可能になり、イントラネットアクセスのための優れたソリューションといえます。DBMS固有のネットワークプロトコルを直接インプリメントする必要があるため、DBMSベンダ自身が主な供給元となります。
TYPE3ドライバと同様に、Pure Javaドライバなので、ネットワークを介してダウンロードして使用することができます。しかし、DBMSへの接続に必要なすべての処理が含まれるため、TYPE3ドライバと比較してドライバサイズは大きくなります。
![]() |
これらTYPE3、4のドライバは、自動インストールをはじめとしたJavaテクノロジのすべての利点を提供することができるという点で最も望ましいソリューションでしょう。
ドライバの種類 | Pure Java | ダウンロード可能か? | DBへの接続 | |
TYPE1 | JDBC-ODBCブリッジ | × | × | 直接 |
TYPE2 | ネイティブ・ブリッジ | × | × | 直接 |
TYPE3 | ネットプロトコル | ドライバ部分=○ 中継サーバ=不定 |
○ | 間接 |
TYPE4 | ネイティブプロトコル | ○ | ○ | 直接 |
4種類のドライバの違いは接続の構成の違いで、それぞれに利点や欠点が存在します。また、どの種類のドライバを選択したとしても、ソースコードをドライバに合わせて修正する必要はなく、変化するものはシステム構成だけです。このことにより、データベース接続にJDBCを用いるアプリケーションのポータビリティは保証されます。
このことを踏まえて、システムを構築するうえで最も適したドライバを選択するようにしましょう。ただし使用するシステム構成によっては、一部の種類のドライバが供給されていないことがあります。利用可能なドライバはWeb上で公開されていますのでこちら(http://java.sun.com/products/jdbc)から参照してください。
![]() |
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
![]() |
|
|
|
![]() |