「Javaからデータベースを利用する」では、JDBCを使用してデータベースに接続し、クエリーや更新処理を行うサンプルを紹介していきます。1回目の今回はJavaでデータベースを利用する際に用いるAPI「JDBC」の基本を解説していきます。
JDBCの仕組み
JDBCはJava2から正式にSDKに含まれることになったAPIで、OracleやDB2、MySQLなど様々なデータベースに対して、共通のコードでアクセスできる仕組みを提供してくれます。
それぞれのデータベースに接続する際には固有のJDBCドライバと呼ばれるライブラリが必要になります。各DBのJDBCドライバはそれぞれのデータベースのベンダーやサードパーティから有償、または無償で提供されています。
そして各ドライバはDriverManagerと呼ばれるクラスによって管理されます。以下はJDBCのイメージ図です。
「JDBCの概念図」

JDBCドライバのタイプ
JDBCドライバには以下の4つのタイプが存在します。
1. Type1 JDBC-ODBCブリッジ
JavaコードからODBCドライバを介してデータベースにアクセスするタイプのドライバ。Javaコードが実行されるコンピュータ上にODBCドライバがインストールされている必要がある。
2. Type2 ネイティブ・ブリッジ・ドライバ
Javaコードからネイティブドライバ(C言語などで記述されたハードウェアとOS固有のライブラリ)を介してデータベースにアクセスするタイプのドライバ。Javaコードが実行されるコンピュータ上にOSやハードウェアに固有のネイティブドライバがインストールされている必要がある。
3. Type3 ネット・プロトコル・ドライバ
Javaコードとデータベースとの中間に仲介サーバを配置し、Javaコードはその仲介サーバとやりとりを行うタイプのドライバ。Type1やType2のように他のライブラリに依存しない。
4. Type4 ネイティブプロトコルドライバ
データベースとのやりとりを全てJavaで実装しているタイプのドライバ。その他のライブラリなどを必要とせず、Appletなどでも使用できる。
Type1のJDBC-ODBCブリッジはSDKに含まれているため、ODBCドライバが設定されている環境であれば、新たにJDBCドライバを取得する必要なく使用できます。しかし、ODBCドライバを介することによるパフォーマンスの問題がある点や、他のタイプのドライバが各データベース向けに既に提供されていることから、実際のプロジェクトでこのタイプを使用することはほとんどないと思います。
Type3のドライバに関しても、かつては複数のベンダからミドルウェアが提供されていましたが、現在のプロジェクトの中で見かけることはほとんどありません。
従って現在ではType2かType4の選択になるケースが多いのですが、他のライブラリに依存せず、JDBCドライバだけで動作するという点でType4を使用するケースが多いと思います。Type2はプラットフォーム固有のネイティブライブラリをコールするためパフォーマンスが良いという説やそれによってオーバーヘッドが発生するという説もあります。
いずれにしても、その僅かなパフォーマンスの差によってドライバを選択するという状況はあまり考えられないので、筆者としてはType4が現状のベストの選択と思います。
さて、次回はJDBCで実際にOracleに接続するサンプルコードを紹介します。
画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。
ユーザ登録をしてログインするとランキングに参加できます。