WebLogic Type 4 JDBC ドライバ ガイド
![]() |
![]() |
![]() |
![]() |
以下の節では、DB2 用の BEA WebLogic Type 4 JDBC ドライバのコンフィグレーション方法と使用方法について説明します。
DB2 用の BEA WebLogic Type 4 JDBC ドライバ (「DB2 ドライバ」) は次のバージョンをサポートします。
注意 : このドキュメントでは、DB2 の各バージョンを以下のように表記します。
BEA WebLogic Type 4 JDBC DB2 ドライバのドライバ クラスは次のとおりです。
XA : weblogic.jdbcx.db2.DB2DataSource
非 XA : weblogic.jdbc.db2.DB2Driver
WebLogic Server ドメインに JDBC データ ソースをコンフィグレーションする場合に、これらのドライバ クラスを使用します。
DB2 データベースに接続するには、以下の適切な形式の URL を使用します。
jdbc:bea:db2://db2_server_name
:port
;DatabaseName
=your_database
jdbc:bea:db2://db2_server_name
:port
;Location=db2_location
;CollectionId=your_collectionname
表 3-1 では、DB2 ドライバでサポートされる JDBC 接続プロパティを示し、各プロパティについて説明します。WebLogic Server ドメインの JDBC データ ソースのコンフィグレーションでこれらの接続プロパティを使用できます。プロパティを指定するには、JDBC データ ソースのコンフィグレーションで次の形式を使用します。
property=value
注意 : すべての接続プロパティ名で大文字と小文字は区別されません。たとえば、Password は password と同じです。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AS/400 上で動作する DB2 データベースに接続する場合、locationName プロパティを設定する必要があります。
Properties
オブジェクトを設定します (「DB2 接続プロパティ」を参照)。
jdbc:bea:db2://<Host>:<Port>;LocationName=RelationalDatabaseName
...
Properties props = new Properties();
props.put("user", user);
props.put("password", password);
....
myDriver = (Driver)Class.forName("weblogic.jdbc.db2.DB2Driver").newInstance();
conn = myDriver.connect("jdbc:bea:db2://10.1.4.1:446;LocationName=S10B757B", props);
stmt = conn.createStatement();
stmt.execute("select * from MYDATABASE.MYTABLE");
rs = stmt.getResultSet();
...
DB2 パッケージは、プログラムの準備中に生成され、SQL 文の実行に使用される DB2 サーバ上の制御構造です。DB2 ドライバは接続時に必要なすべての DB2 パッケージを自動的に作成します。パッケージがすでに存在する場合、ドライバは既存のパッケージを使用して接続を確立します。
注意 : 接続用に作成する必要のあるパッケージの数やサイズによっては、初期接続に 2、3 分かかる場合があります。以降の接続ではこの遅延は発生しません。
デフォルトでは、DB2 ドライバによって作成される DB2 パッケージには 200 の動的セクションが含まれており、NULLID コレクション (またはライブラリ) の中に作成されます。ほとんどの場合、DB2 ドライバが接続時に自動的に作成するため、DB2 パッケージを作成する必要はありません。必要な場合は、次のいずれかの方法で DB2 パッケージを作成できます。
dbping
ユーティリティを使用して、手動で DB2 ドライバにパッケージを作成させる。「dbping を使用した DB2 パッケージの作成」を参照してください。注意 : ユーザ ID にデータベースに対する CREATE PACKAGE 特権がなければなりません。ない場合は、データベース管理者が代わりにパッケージを作成する必要があります。
JDBC データ ソースのコンフィグレーションに示されたユーザ ID はパッケージのオーナーでなければなりません。
DB2 パッケージを作成する際のユーザ ID には、データベースに対する BINDADD 特権が付与されている必要があります。適切な特権が付与されているかどうか不明な場合は、データベース管理者に問い合わせてください。
WebLogic Type 4 JDBC DB2 ドライバで DB2 サーバ上にパッケージを作成するには、WebLogic Server dbping
ユーティリティを使用できます。dbping
ユーティリティは、JDBC ドライバを介したクライアント マシンおよび DBMS 間の接続のテストに使用されます。WebLogic Type 4 JDBC DB2 ドライバは DB2 パッケージがまだ存在しない場合は自動的に作成するため、このユーティリティを実行すると DB2 サーバ上にデフォルトの DB2 パッケージが作成されます。
dbping
ユーティリティを使用した DB2 パッケージの作成の詳細については、「dbping を使用した DB2 パッケージの作成」を参照してください。
初期接続 URL 内に特定の接続プロパティを設定すると、DB2 パッケージを自動的に作成できます。表 3-2 に、DB2 パッケージを作成する場合に初期接続 URL で使用する接続プロパティを示します。
注意 : WebLogic Server JDBC データ ソースでは、データ ソースのすべての接続が同じ URL と接続プロパティを使用するため、この方法の使用はお勧めしません。複数の接続を持つ JDBC データ ソースを作成すると、データベース接続が作成されるたびにパッケージが再作成されます。
|
|
CreateDefaultPackage=TRUE
を使用するとデフォルトの名前のパッケージが作成されます。CreateDefaultPackage=TRUE
を使用して、CollectionId を指定しない場合、NULLID CollectionId が作成されます。
注意 : DB2 UDB で新しいパッケージを作成するには CreateDefaultPackage
と一緒に ReplacePackage=TRUE
を使用する必要があります。ただし、パッケージがすでに存在する場合、ReplacePackage=TRUE
を使用するとそのパッケージは置き換えられます。
次の URL では、400 の動的セクションを持つ DB2 パッケージが作成されます。DB2 パッケージがすでに存在している場合は、新しく作成したパッケージで置き換えられます。
jdbc:bea:db2://server1:50000;DatabaseName=SAMPLE;
CreateDefaultPackage=TRUE;ReplacePackage=TRUE;DynamicSections=400
次の URL では、400 の動的セクションを持つ DB2 パッケージが作成されます。
jdbc:bea:db2://server1:50000;LocationName=SAMPLE;CollectionId=DEFAULT;
CreateDefaultPackage=TRUE;DynamicSections=400
動的セクションは実在する実行可能オブジェクトで、動的 SQL リクエストに応答するために必要なロジックが含まれています。これらのセクションは、ハンドルや Prepared Statement、およびそれに関連付けられた結果セットで使用します。
場合によっては、デフォルトの数 (200) より多くの動的セクションを持つ DB2 パッケージを作成する必要があります。アプリケーションで多数の動的セクションを持つ DB2 パッケージが必要な場合は、次の情報を考慮してください。
PCKCACHE_SZ
を増やして、多数のパッケージを作成できるようにした方がよい場合があります。
表 3-3 に、DB2 ドライバでサポートされるデータ型と、それらが JDBC データ型へどのようにマップされるかを示します。
|
|
|
|
|
|
|
|
データ型の詳細については、「getTypeInfo」を参照してください。
パフォーマンスを向上させるため、システム カタログ テーブルのビューをデフォルト カタログ スキーマ以外のスキーマで作成できます。このプロパティにカタログ テーブルのビューを含むスキーマを指定すると、ドライバでそれらのビューを使用できます。カタログ メソッドが正しく機能するには、表 3-4 に示すカタログ テーブルのビューが、指定したスキーマに存在している必要があります。必要となるビューは、使用している DB2 データベースによって異なります。
DB2 ドライバでサポートされている SQL エスケープ シーケンスについては、「JDBC の SQL エスケープ シーケンス」を参照してください。
DB2 ドライバでサポートされるアイソレーション レベルを表 3-5 に示します。JDBC アイソレーション レベルは、表に示す適切な DB2 トランザクション アイソレーション レベルにマップされています。デフォルトのアイソレーション レベルは Read Committed です。
DB2 ドライバは、スクロールインセンシティブな結果セット、および更新可能な結果セットをサポートしています。
注意 : DB2 ドライバが、要求された結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入った SQLWarning を生成します。
DB2 ドライバで JTA を介した JDBC 分散トランザクションを使用するには DB2 UDB 8.1 が必要です。
Blob の取得と更新は、DB2 UDB 8.1、DB2 OS/390、および DB2 iSeries V5R2 の場合にのみ DB2 ドライバでサポートされます。
Clob の取得と更新は DB2 ドライバでサポートされます。DB2 ドライバは、DB2 UDB 8.1、DB2 OS/390、および DB2 iSeries V5R2 の場合は最大 2GB の Clob をサポートします。サポートされている他の DB2 データベース バージョンの場合は最大 32KB の Clob をサポートします。
DBClobs の取得と更新は、DB2 UDB 8.1、DB2 OS/390 7.x、および DB2 iSeries V5R2 の場合にのみ DB2 ドライバでサポートされます。
DB2 UDB 8.1 および DB2 OS/390 の場合、DB2 ドライバはネイティブの DB2 バッチ メカニズムを使用します。デフォルトでは、PreparedStatement を使用して実行されるバッチ処理のパラメータ値を設定するのに使用するメソッドは、パラメータが関連付けられるカラムのデータベース データ型に一致する必要があります。
DB2 サーバでは暗黙的なデータ変換を実行しないため、カラムのデータ型に一致しないパラメータ値を指定すると、DB2 サーバはエラーを生成します。たとえば、ストリームまたは配列の長さが 32KB 未満の場合にそのストリームまたはバイト配列を使用して Blob パラメータの値を設定するには、setObject
メソッドを使用し、対象の JDBC 型を BLOB
として指定する必要があります。setBinaryStream
または setBytes
メソッドは使用できません。
このメソッド型の制限を解除するには、BatchPeformanceWorkaround
接続プロパティを true
に設定します (「DB2 接続プロパティ」を参照)。たとえば、setBinaryStream
または setBytes
メソッドを使用すると、ストリームや配列の長さに関係なく Blob パラメータの値を設定できます。ただし、パラメータの設定は指定された順序で実行されない場合もあります。
注意 : Administration Console でデータ ソースを作成する場合、Administration Console では BatchPeformanceWorkaround
接続プロパティが、デフォルトで true
に設定されます。
DB2 用の WebLogic Type 4 JDBC ドライバを使用し、JMS JDBC ストアとして使用されるデータ ソースの場合は、BatchPerformanceWorkaround
プロパティを true に設定する必要があります。
DB2 ドライバは、DB2 UDB 8.1、DB2 OS/390、および DB2 iSeries V5R2 でのすべての文のパラメータ メタデータを返すことができます。
これら以外にサポートされる DB2 データベース バージョンでは、以下の形式の SQL のパラメータ メタデータを返すことができます。
INSERT INTO foo VALUES (?, ?, ?)
INSERT INTO foo (col1, col2, col3) VALUES (?, ?, ?)
UPDATE foo SET col1=?, col2=?, col3=?WHERE col1
operator
?[{AND | OR} col2
operator
?]
ここで、operator
は SQL 演算子 (=
、<
、>
、<=
、>=
、または <>
) です。
DB2 ドライバは自動生成キーの値の取得をサポートします。DB2 ドライバから返される自動生成キーは、auto-increment カラムの値です。
値を返す方法は、パラメータを含む Insert 文を使用しているかどうかによって異なります。
Statement.execute (String sql, int autoGeneratedKeys)
Statement.executeUpdate (String sql, int autoGeneratedKeys)
アプリケーションは Statement.getGeneratedKeys メソッドを使用して、生成されたキーの値をドライバから取得します。
![]() ![]() |
![]() |
![]() |