[JDBC]

[JDBC]について


[JDBCとは?]
★JDBCは、一言でいってしまうなら「リレーショナル・データベース(および、ほと んどすべての表形式のデータ)にアクセスするための、標準Java API」です。JDBCは 「Java Database Connectivity」の省略だといわれています(が、実はJDBC仕様には 明記されていません)。
★企業内のクリティカルなデータは、多くの場合リレーショナル・データベースに格 納されています。そのため、JDBCは、Javaによるエンタープライズ・アプリケーショ ンの基礎をなす、重要なAPIの1つとなっています。
♪JDBCとデータベースの関係
☆データベース間の差異を吸収するJDBCドライバと、特定のベンダに依存しない標準 APIであるJDBC APIを利用することによって、ポータブルなデータベース・アプリ ケーションを構築することが可能になります。実行環境のプラットフォームだけでは なく、接続するデータベースに対しても中立となるため、Javaの優れた特徴の1つで あるWORA (Write Once, Run Anywhere) を、より高い次元で実現できるわけです。
♪JDBCは、次のようなさまざまなJavaコンポーネントから利用することができます。
☆通常のJavaクラスや、JavaBeans
☆クライアントで動作する、Javaアプリケーション
☆Webクライアント(Webブラウザ)で動作する、Java Applet
☆Webコンテナ(J2EEサーバ)で動作する、ServletやJSP
☆EJBコンテナ(J2EEサーバ)で動作する、Session BeanやEntity Bean

♪JDBCの歴史
☆JDBCは、1996年2月に発表され、1996年12月リリースのJava Development Kit (JDK)1.1には、JDBC 1.x API(java.sql パッケージ)が含まれるようになりまし た。JDBCは当初から業界に広く受け入れられ、データベース・ベンダやミドルウェア ・ベンダは、競ってJDBCドライバを開発してきました。
☆現在、データベース・アクセスのための基本的な機能は、JDBC 1.2 APIで提供され ています。
☆1998年には、JDBC 2.0 Core API、JDBC 2.0 Optional Package API(旧称JDBC 2.0 Standard Extension API:javax.sql パッケージ)が相次いでリリースされ、1998年 12月リリースのJava 2 Platform, Standard Edition (J2SE) 1.2 では、JDBC 2.x Core APIが含まれるようになりました。
☆1999年6月には、サーバ・サイドJavaアプリケーションに必要な標準API群を規定し た、Java 2 Platform, Enterprise Edition(J2EE)1.2が発表され、JDBC 2.0 Optional Package APIは、J2EEを構成するAPIの1つとなりました。
☆JDBC 2.1 Core APIは、JDBC 1.2 APIの後継にあたり、JDBCの基本機能を提供しま す。一方、JDBC 2.0 Optional Package APIは、接続プーリングや分散トランザク ションなど、サーバ・サイドJavaで求められる拡張機能を提供します。JDBC 2.0 API は、これら2つのAPIの総称です。
☆JDBC 3.0 APIは、Java Community Process (JCP) によって仕様の策定が進められ ています。本稿執筆時点では、Proposed Final Draft 3が公開されています。JDBC 3.0 APIでは、基本的なフレームワークはJDBC 2.0 APIを踏襲し、これを完成させる ことを目的としています。
♪JDBC APIのアーキテクチャ
☆JDBCドライバ・マネージャ(java.sql.DriverManager クラス) は、Javaプログラ ムとJDBCドライバの間に位置する管理レイヤです。その役割は、利用可能なJDBCドラ イバを管理し、適切なJDBCドライバを用いてデータベースに接続することです。
♪JDBCドライバの4つのタイプ
☆JDBCドライバは、実際にデータベースに接続し、その後のデータベース・アクセス を実行する役目を持っています。JDBCドライバ・マネージャがJDBCドライバを管理で きるように、JDBCドライバは、JDBC Driver APIのインターフェイスを実装する必要 があります。数多くのデータベース・ベンダやミドルウェア・ベンダが、さまざまな JDBCドライバを提供しています。通常のJava開発者は、JDBC APIだけを知っていれば 十分であり、JDBC Driver APIを知る必要はありません。
☆JDBCドライバは、その実装方法によって、次の4つのタイプに分けられます。

★タイプ カテゴリ
 JDBC-ODBCブリッジ・ドライバ
◆.優ぅ謄ブ・ブリッジ・ドライバ
 ネット・プロトコル・ドライバ
ぁ.優ぅ謄ブ・プロトコル・ドライバ
.織ぅ1:JDBC-ODBCブリッジ・ドライバ
☆タイプ1のJDBC-ODBCブリッジ・ドライバ(sun.jdbc.odbc.JdbcOdbcDriverクラス) は、メラントとサン・マイクロシステムズが共同開発したドライバであり、J2SEに含 まれています。これを使用するには、クライアントにインストールされている既存の ODBCドライバが必要です。ODBCブリッジ・ドライバは、JDBC APIと対応するODBC API をマッピングすることによって、データベースにアクセスします。ODBCドライバのイ ンストールが必要なため、Appletから利用することはできません。
▲織ぅ2:ネイティブ・ブリッジ・ドライバ
☆タイプ2のネイティブ・ブリッジ・ドライバは、JDBC APIをデータベース製品固有 のネイティブAPIにマッピングして、データベースにアクセスします。これを使用す るには、データベース製品固有のクライアント・ライブラリが必要です。タイプ1ド ライバと同様に、Appletから利用することはできません。
☆オラクルの場合は、タイプ2ドライバとしてOCIドライバを提供しています。Oracle データベースのクライアントAPIであるOCI(Oracle Call Interface)を利用するた め、Oracleクライアントのインストールが必要です。
☆タイプ3のネット・プロトコル・ドライバは、ミドルウェア・サーバを介してデー タベースにアクセスします。JDBCドライバは、データベースに依存しない中間プロト コルを用いて、ミドルウェア・サーバと通信します。ミドルウェア・サーバは、この 中間プロトコルをデータベースのネイティブAPIに変換して、データベースにアクセ スすることになります。
☆JDBCドライバ自体は、ネイティブAPIにアクセスしないため、Javaのみで実装で き、Appletでもダウンロードして利用することができます。
タイプ3:ネット・プロトコル・ドライバ
☆タイプ3ドライバは、JDBCドライバでネイティブAPIをサポートする必要がないた め、タイプ4ドライバに比べて軽量である点がメリットです。ですが、システム構成 が複雑になるというデメリットがあります。
☆タイプ3ドライバとしては、メラントのSequeLink JDBCなどがあります。
ぅ織ぅ4:ネイティブ・プロトコル・ドライバ
☆タイプ4のネイティブ・プロトコル・ドライバは、データベース製品固有のネイ ティブAPIを完全にJavaのみで実装したものです。このため、クライアント・ライブ ラリをインストールする必要はなく、Appletでもダウンロードして利用することがで きます。
☆タイプ4ドライバは、JDBCドライバでネイティブAPIのJava実装を持つため、ほかの タイプのドライバに比べ、サイズが大きくなる傾向があります。ですが、4つのタイ プの中で最もシンプルな構成をとれる点は魅力的です。
☆オラクルの場合は、タイプ4ドライバとして、Thinドライバを提供しています。 Thinドライバは、TCP/IP上のNet8通信を実装しており、Oracleデータベースと直接通 信することが可能です。
☆JDBCドライバの選択は難しい問題です。データベース・ベンダが提供するドライバ (多くの場合、無償です)や、サード・パーティの提供する有償のドライバの中か ら、パフォーマンス、システム構成への適合性、ドライバが提供する付加価値などを 考慮して、慎重に選択すべきでしょう(もちろん、JDBCドライバを変更しても、コー ドをほとんど修正することなく、再利用することはできますが)。