JDBC

last modified: Mar/16th/2002

JDBC は Java によるデータ・ベース (DB -DataBase) へのアクセスの仕組みです。アプリケーション、 Servlet, Applet ともに使えます。

Network アプリケーションでは、ローカルなマシンのアプリケーションから、 DB サーバマシンの DB へ接続して操作するモデルを二層モデル、 ローカルなマシンのアプレットからウェブサーバ上のアプリケーション/サーブレットを使って、別の DB サーバの DB を操作するモデルを三層モデルと呼び、DB サーバなどの Web サーバの後ろにあるシステムをバックエンドと呼びます。

データ・ベースとはなんだろうか

もともとデータベースという言葉は、アメリカ国防総省で使われました。分散していたデータを一元管理するための仮想的なベース(基地)と言う意味です。その後、業務システムにおいて、取り扱いデータが膨大かつ多様になるに従い、データ中心指向が発展し、現在ではデータベース抜きのシステムは考えられなくなりました。

データベースの最近の主流は RDB -Relational DataBase (関係データベース)と呼ばれるもので、 SQL -Structured Query Language という簡単な言語を用いて操作します。レガシーなホスト系(大型汎用機)では、階層型データベースも使われていますが、インターネット普及によるオープン化、分散化の流れの中では消え行くテクノロジーです。

RDB では、ディスク上に存在するデータの実態に対して、「表」や「視点」と呼ばれるものを通してアクセスします。

このデータベースにアクセスする言語が SQL と呼ばれるもので、 SQL によってデータベースを操作するためのソフトウェアは、RDBMS -Relational DataBase Management System と呼ばれるミドルウェアになります。アプリケーション・ソフトウェアからはサブシステムと呼ばれることもあります。RDBMS は Oracle, IBM DB2 UDB, Sybase, MS Access なとが有名です。

Network Centric から、 Contets Centric へ移行しつつある現状では、データベースの役割は中心的なものになりつつあり、 Web アプリケーションで HTTP サーバのバックエンドの DB は不可欠です。そして、ネットワーク上での利用を想定して開発されている Java によってデータベースにアクセスするための API である JDBC は、 Java の主要な機能の一つと言えます。

JDBC とはなんだろうか

JDBC は Java プログラムから DBMS に SQL 文を発行して、データベースを操作するための仕組みです。つまり Java からデータベースにアクセスするときに使う API -Applidcation Program Interface です。 JDBCTM は "Java DataBase Connectivity" の頭文字をとって名づけられたそうです。

Java の開発をしている SunMicrosystems によって開発され、J2SE に全てのJDBC APIが含まれています。J2SE 1.4 に含まれるのは JDBC 3.0 API であり、 J2SE 1.3/1.2 には JDBCTM 2.0 API が含まれています。

JDBC API は次の2つのパッケージ、 java.sql と javax.sql から成ります。

また、Java がデータベースを操作するためのドライバが必要です。これらはミドルウェアのベンダー(メーカ)が提供しており、ほとんどの DBMS に含まれていますので、 DB が使える環境であれば、 JDBC も使えると思って間違いないでしょう。

JDBC アプリケーション階層

SQL 文を発行するための Java API である JDBC を使ったプログラムは次のような階層になっています。

1. Java Application/Applet
3層モデルでは、アプリケーション・サーバ上の Servlet が該当します。
2. JDBC API
アプリケーション/アプレットによって、 JDBC Driver Mnager へ接続するための API で、抽象レイヤーです。
3. JDBC Driver Manager
DB Driver へ接続するためのインター・フェイスです。ベンダーが提供するドライバへ接続して管理するもので、 Java 標準パッケージ javax.naming, javax.sql を利用します。これは J2SE に含まれています。
4. JDBC Driver
DB を直接アクセスするものです。
5. DB
通常は RDB となり、 Sybase, Oracle, IBM DB2 UDB などが有名です。

JDBC プログラミング

JDBC API を利用する DB へのアクセスは次のような手順を踏みます。

1. JDBC ドライバの登録
DriverManager クラスを使って、これから利用する DBM を登録しておかなくてはなりません。登録されたドライバはメモリ上にロードされます。
Class.forName("jdbc.odbc.JdbcOdbcDriver");
または
DriverManager.registerDriver(new DB2Driver());
2. DB の指定
登録したドライバが、データソースを認識/接続確立できるように、データソースを識別する URL を指定します。 URL の形式は、ドライバのベンダーが提供しているので、利用者が迷う事はありません。
String url = "jdbc:subprotocol:subname";
3. DB とのコネクションの確立
DB への接続には Connection オブジェクトを使います。このとき、メソッド DriverManager.getConnection か、DriverManager の代替として DataSource インタフェース が利用できます。
Connection con = DriverManager.getConnection(url, "userID", "passwd");
4. SQL 文の発行
DB を操作するための SQL 文を DB へ送るためにはに Statement オブジェクトを使用し、SQL 文の実行のためのコンテナの役目をします。
Statement stmt = con.createStatement();
5. ResultSet の受信
ResultSet は、発行された SQL 文の実行結果を含む Java オブジェクトです。これは指定されたデータ型で返され、 Java アプリケーション内で処理されます。
ResultSet rs = stmt.executeQuery("SELECT * FROM CUSTOMER");
while (rs.next()) {
	String str1 = rs.getString("NAME");
	int str2 = rs.getInt("CUST_ID");
}
6. 修了処理
必要がなくなったらできるだけ早く明示的に、全ての Statement を Statement.close でクローズし、全ての COnnection を Connection.close でクローズします。これによって、ガーベッジコレクションが暗黙的にリソースを開放する前に、不要なリソースを開放し、結果的にパフォーマンス/可用性を向上させます。
stmt.close();
con.close();

JDBC API によって、 DB にアクセスするためには、以上の手順が必要です。

パッケージ

JDBC を利用するには次の前提が必要です。

標準パッケージの import
import java.sql.*;
ドライバクラスを提供しているパッケージの import
import vender.package;
SQLException のキャッチ
try {
	// Connection
	// Statement
	// close
} catch (SQLException ex) {
	while (ex != null) {
		System.out.println ("SQLState: " + ex.getSQLState ());
		System.out.println ("Message:  " + ex.getMessage ());
		System.out.println ("Vendor:   " + ex.getErrorCode ());
	}
}


Copyright © 2001 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送