Db2 11.1

DataSource インターフェースを使用したデータ・ソースへの接続

さまざまなデータ・ソースで移植可能なアプリケーションを作成する必要がある場合は、DataSource インターフェースを使用します。

このタスクについて

DriverManager を使用してデータ・ソースに接続すると、アプリケーションは、特定の JDBC ドライバー・クラス名とドライバー URL を識別しなければならなくなるので、移植性が低下します。 ドライバー・クラス名とドライバー URL は、JDBC ベンダー、ドライバーの実装、データ・ソースによって異なります。

DataSource インターフェースによってデータ・ソースに接続する場合は、DataSource オブジェクトを使用します。

DataSource オブジェクトを使用するための最も簡単な方法は、DriverManager インターフェースの場合のように、オブジェクトの作成と使用を同じアプリケーションで実行することです。 ただし、この方法では移植性が得られません。

DataSource オブジェクトを使用する最善の方法は、システム管理者が WebSphere® Application Server などのツールを使用して、オブジェクトの作成と管理を別途行うようにすることです。 DataSource オブジェクトを作成して管理するプログラムでは、Java™ Naming and Directory Interface (JNDI) も使用して、論理名を DataSource オブジェクトに割り当てます。 DataSource オブジェクトを使用する JDBC アプリケーションでは、その論理名でオブジェクトを参照できるので、基礎になっているデータ・ソースの情報が不要になります。 さらに、システム管理者がデータ・ソースの属性を変更する場合でも、アプリケーション・プログラムを使用する側でアプリケーション・プログラムを変更する必要はありません。

WebSphere を使用して DataSource オブジェクトをデプロイする方法の詳細については、Web で以下の URL を参照してください。
http://www.ibm.com/software/webservers/appserv/

DataSource オブジェクトを自分でデプロイする方法については、『DataSource オブジェクトの作成およびデプロイ』を参照してください。

DataSource インターフェースと DriverManager インターフェースを同じアプリケーションで使用することは可能ですが、移植性を最大限に高めるために、DataSource インターフェースだけを使用して接続を取得することをお勧めします。

手順

システム管理者が既に作成して論理名を割り当てた DataSource オブジェクトを使用して接続を取得するには、以下の手順を実行します。

  1. システム管理者から、接続する必要があるデータ・ソースの論理名を取得します。
  2. 次の手順で使用する Context オブジェクトを作成します。 Context インターフェースは、JDBC ではなく Java Naming and Directory Interface (JNDI) に組み込まれています。
  3. アプリケーション・プログラムで JNDI を使用して、論理データ・ソース名に関連した DataSource オブジェクトを取得します。
  4. DataSource.getConnection メソッドを使用して接続を取得します。
    以下のいずれかの形式の getConnection メソッドを使用できます。
    getConnection();
    getConnection(String user, String password);
    接続のユーザー ID とパスワードとして、DataSource のデプロイ時に指定されているユーザー ID とパスワード以外の値を指定する必要がある場合は、2 番目の形式を使用します。

システム管理者が作成した DataSource オブジェクトを使用して接続を取得する例: この例で接続する必要があるデータ・ソースの論理名は、jdbc/sampledb です。 選択されたステートメントの右にある番号は、前述のステップに対応しています。

図 1. DataSource オブジェクトによる接続の取得
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
…
Context ctx=new InitialContext();                       2 
DataSource ds=(DataSource)ctx.lookup("jdbc/sampledb");  3 
Connection con=ds.getConnection();                      4 
DataSource オブジェクトの作成と使用を同じアプリケーションで実行する例:
図 2. DataSource オブジェクトの作成と使用を同じアプリケーションで実行する
import java.sql.*;        // JDBC base
import javax.sql.*;       // Additional methods for JDBC
import com.ibm.db2.jcc.*; // IBM Data Server Driver for JDBC and SQLJ   1 
                          // interfaces
DB2SimpleDataSource dbds=new DB2SimpleDataSource();             2 
dbds.setDatabaseName("dbloc1");                                 3 
                          // Assign the location name
dbds.setDescription("Our Sample Database");
                          // Description for documentation
dbds.setUser("john");
                          // Assign the user ID
dbds.setPassword("dbadm");
                          // Assign the password
Connection con=dbds.getConnection();                            4 
                          // Create a Connection object
注記 説明
1 DataSource インターフェースの実装が含まれているパッケージをインポートします。
2 DB2SimpleDataSource オブジェクトを作成します。 DB2SimpleDataSource は、DataSource インターフェースの IBM® Data Server Driver for JDBC and SQLJ 実装の 1 つです。 Db2®DataSource 実装については、『DataSource オブジェクトの作成およびデプロイ』を参照してください。
3 setDatabaseName メソッド、setDescription メソッド、setUser メソッド、setPassword メソッドによって、DB2SimpleDataSource オブジェクトに属性を割り当てます。 IBM Data Server Driver for JDBC and SQLJ 使用時に DB2SimpleDataSource オブジェクトに設定できる属性については、『IBM Data Server Driver for JDBC and SQLJ のプロパティー』を参照してください。
4 DB2SimpleDataSource オブジェクト dbds に対応するデータ・ソースへの接続を確立します。