データベースの使用

ダイナミックな Web サイトを生成する最も一般的な方法は、データベースを使用することです。Web アプリケーションはユーザーリクエストから入力を解釈し、データベースに保管されたデータを使用してダイナミックページで応答します。このセクションでは、JDBC (Java Database Connectivity:Java データベース接続) メカニズムを説明し、JRun データソースを使用して Web アプリケーションのデータベースにアクセスする方法を説明します。

JRun のインストールには、PointBase Embedded データベースが含まれています。JRun は、いくつかのサンプルアプリケーションでこのデータベースを使用しますが、Web アプリケーションでもこれを使用できます。データベースの使用方法の詳細については、『JRun 管理者ガイド』を参照するか、PointBase ヘルプファイル (<JRun のルートディレクトリ>/pointbase/docs/server_embedded/GettingStarted/serverindex.html) をご覧ください。

JDBC の理解

JRun でのデータベースアクセスは、JDBC API (Java database connectivity API:Java データベース接続 API) を使用して実行します。JDBC は、Sun が提供するドライバマネージャと JDBC ドライバを使用します。 JDBC ドライバは、Sun によって JDBC-ODBC ブリッジが、サードパーティーベンダーからは他の JDBC ドライバが提供されています。

JDBC ドライバのタイプ

次の表で説明されているように、JDBC ドライバにはいくつかのタイプがあります。
ドライバ
説明
ネイティブ API
ドライバ
このタイプの JDBC ドライバは Type 2 ドライバとも呼ばれています。これは Java コードをネイティブデータベースライブラリで ラップします。Type 2 ドライバを使用するには、JRun はデータベースクライアント API ライブラリにアクセスできる必要があります。
ネットプロトコル
ドライバ
このタイプの JDBC ドライバは Type 3 ドライバとも呼ばれています。これは汎用ネットワークプロトコルとミドルウェアコンポーネントを使用してデータベースと通信します。
ネイティブプロトコルドライバ
このタイプの JDBC ドライバは Type 4 ドライバとも呼ばれています。これはデータベース特有のネイティブプロトコルを使用してデータベースと通信します。

JRun は、Type 4 JDBC ドライバ付きで販売され、これを使用してさまざまなリレーショナルデータベースにアクセスできます。詳細については、JRun ドキュメントとともに配布されている『DataDirect Connect JDBC User's Guide and Reference』を参照してください。

データベース接続

Web アプリケーションにはデータベースに接続する方法が数多くあります。最も一般的な 2 つの方法は、JRun データソースを使用する方法と手動接続を作成する方法です。 次の表で、これら 2 つの方法を説明します。
接続方法
説明
JRun データソース
JMC を使用して JRun データソースを設定した場合、データベースに接続するには、アプリケーションでデータソース名による JNDI 検索を実行する必要があるだけです。この処理については、 「JRun データソースの使用」 で説明します。
JRun データソース接続方法を使用します。ビルトイン JRun コネクションプールメカニズムを透過的に使用します。
JRun には、ユーザーが使用できる Merant データベースドライバがあります。JMC では、ドライバクラス名、URL、ポートなどの多くの一般的な JDBC ドライバの設定に関して、ドライバ特有のデフォルト設定が用意されています。これらの設定は変更することもでき、必要な場合は、他の JDBC ドライバを使用することもできます。
詳細については、JMC オンラインヘルプを参照してください。JMC で JDBC データソースを設定する手順については、
『JRun 入門』を参照してください。
手動データベース
接続
Web アプリケーションで JDBC 接続を手動で作成するには、
コードに次の情報を与える必要があります。
  • データベースドライバ  Class.forName メソッドを使用
    してデータベースドライバのインスタンスを生成します。
  • データベース接続オブジェクト  DriverManager.getConnection メソッドを使用
    して、Connection オブジェクトを確立します。
  • データベース URL  データベースの URL には、プロトコル (jdbc)、odbc や sequelink などのドライバのサブプロトコル、データベースを識別するドライバ依存データが含まれています。データベース URL のフォーマットとコンテンツについては、ご使用のデータベースドライバのドキュメントを参照してください。
手動で作成したデータベース接続をプールするには、カスタムのコネクションプールメカニズムを実装する必要があります。
ドライバクラス名とデータベース URL の詳細については、ご使用の JDBC ドライバのドキュメントを参照してください。

JRun データソースの利点

JRun データソースによって、ビルトインコネクションプールだけでなく、サーブレットの移植性が与えられます。マクロメディアでは、JRun ではこの方法を使用してデータベースにアクセスすることをお勧めします。次のセクションでは、JRun データソース使用の利点を説明します。

設定の簡単さ

JRun には JMC に [JDBC データソース] パネルがあり、ここでデータソースの作成、編集、削除が簡単にできます。詳細については、JMC オンラインヘルプを参照してください。

移植性

データベースに接続するには、次の情報を与える必要があります。

JRun データソースを使用すると、コードは、Web アプリケーションにハードコードされた JDBC ドライバ情報を使用するのではなく、データソース名だけを使用してデータソースを参照します。データソースは 1 度だけ設定します。これによって、サーブレット、EJB、JSP がいくつでもこのデータソースにその名前でアクセスできます。

データソースを使用して、JMC のデータベース定義を更新できます。データベースとデータベースサーバの情報はコードの外に保管されるので、その情報はアプリケーションを再コンパイルせずにいつでも変更できます。

データソース使用によるもう 1 つの利点は、ユーザー名やパスワードなどの重要なデータベース接続情報を JRun 管理者以外のすべての人物から隠すことができることです。Web アプリケーション開発者は、この情報を指定せずにデータベースに接続できます。

コネクションプール

データベースとの接続にはコストがかかります。JRun データソースは、ビルトインプールメカニズムを使用します。JRun 定義のデータソース使用による利点は、JRun がデータベースコネクションプールを作成することです。データベースに接続するときは、このプールメカニズムによって、確立された接続をプールから取得できます。接続を作成する必要がないので、応答時間はずっと短くなります。

アプリケーションで接続を閉じると、JRun は実際に接続を閉じるのではなく、その接続をプールに返します。

コネクションプールをオフにして、独自のカスタムコネクションプールを実装できます。データソース設定の詳細については、JMC オンラインヘルプを参照してください。

サンプルデータソース

JRun には、samples JRun サーバのためにあらかじめ定義された 3 つのデフォルトデータソースがあります。これらのデータソースは、 com.pointbase.jdbc.jdbcUniversalDriver データベースドライバを使用します。次の表で、これらのデータソースを説明します。
データソース名
説明
compass
Compass サンプルアプリケーションで使用します。このアプリケーションはデフォルトで <JRun のルートディレクトリ>/servers/samples/compass-ear/ の samples JRun サーバに
インストールされます。
samples
Techniques サンプルアプリケーションで使用します。このアプリケーションはデフォルトで <JRun のルートディレクトリ>/servers/samples/techniques-ear/ の samples JRun サーバにインストールされます。
smarticket
SmarTicket サンプルアプリケーションで使用します。このアプリケーションはデフォルトで <JRun のルートディレクトリ>/servers/samples/smarticket.ear の samples JRun サーバにインストールされます。

JRun データソースの使用

JRun データソースを使用すると、InitialContext オブジェクトへの JNDI ルックアップを通じて、データソースにアクセスできます。サーブレットでデータソースを使用するには、JDBC API を使用する次のパッケージをインポートする必要があります。

さらに、データベース接続を使用する方法に応じて、次の Java パッケージから 1 つをインポートする必要があります。

次のコード例では、JRun データソースサービスを使用して JDBC データソース情報にアクセスします。

...
import javax.naming.*;
import javax.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
...
Connection dbConnection = null;
ResultSet dbResultSet = null;
ResultSetMetaData rsmd = null;
try {
  InitialContext ctx = new InitialContext();
  DataSource ds = (DataSource) ctx.lookup("compass");
  dbConnection = ds.getConnection();
  Statement stmt = dbConnection.createStatement();
  dbResultSet = stmt.executeQuery("SELECT * FROM user");
  rsmd = dbResultSet.getMetaData();
} catch (Exception e) {
}
...
//結果セットと結果セットのメタデータをここで処理します。
...

サンプルサーブレットを表示するには、samples JRun サーバを起動し、ブラウザで http://localhost:8200/techniques を開きます。

データベースアクセスパフォーマンスの改善

Web アプリケーションでデータベースのパフォーマンスを改善するには、次のテクニックを使用します。

詳細とコード例については、 「JDBC の最適化」 を参照してください。