Cosminexus V9 アプリケーションサーバ 機能解説 互換編

[目次][用語][索引][前へ][次へ]

4.8.7 データベースと接続するときの注意事項

ここでは,DABroker Libraryを使用してHiRDBまたはOracleに接続する場合の注意事項を示します。

<この項の構成>
(1) HiRDBと接続する場合の注意事項
(2) Oracleと接続する場合の注意事項

(1) HiRDBと接続する場合の注意事項

HiRDBと接続する場合の注意事項については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「3.6.5 HiRDBと接続する場合の前提条件と注意事項」を参照してください。

(a) SQLの前処理保持機能

commit()メソッドをわたっても保持されるPreparedStatementオブジェクトは,DELETE文,INSERT文,PURGE文,TABLE文,UPDATE文,CALL文,およびSELECT文で生成したものだけです。ただし,HiRDBクライアント経由でXDM/RD E2を使用する場合にPURGE TABLE文で生成したPreparedStatementオブジェクトは除きます。

これらのSQL以外で生成されたPreparedStatementオブジェクトは,commit()メソッド実行時に無効となります。無効になったPreparedStatementオブジェクトでSQLを実行するとエラーになります。実行例を次に示します。

実行例
PrepareStatement pstmt1 = con.prepareStatement(""lock table tb1"");
PrepareStatement pstmt2 = con.prepareStatement(""lock table tb2"");
pstmt1.execute();  //エラーにならない
con.commit();
pstmt2.execute();  //エラーになる
pstmt1.close();
pstmt2.close();

注※ commit()メソッドによる明示的なコミットのほかに,次の処理も該当します。
  • 自動コミットによる暗黙的なコミット
  • 定義系SQLの実行
  • PURGE TABLE文の実行
  • rollbackメソッドによる明示的なロールバック
  • SQL実行エラーによる暗黙的なロールバック

(2) Oracleと接続する場合の注意事項

ここでは,DABroker Libraryを使用してOracleに接続する場合の注意事項について説明します。

(a) 使用できるJ2EEコンポーネント

DABroker Libraryでは,次のコンポーネントを使用できます。

(b) 型マッピング

DABroker Libraryを使用する場合の,Javaの型とOracleのSQL型のマッピングを次の表に示します。

表4-70 Javaの型とOracleのSQL型のマッピング

メソッド OracleのSQL型
CHAR VARCHAR2 NUMBER DATE TIMESTAMP CLOB LONG BLOB RAW LONGRAW
set/getByte
set/getShort
set/getInt
set/getLong
set/getFloat
set/getDouble
set/getBigDecimal
set/getBoolean
set/getString
set/getBytes
set/getDate
set/getTime
set/getTimestamp
set/getClob
set/getBlob
set/getObject

(凡例)
○:java.sql.PreparedStatement#setXXXおよびjava.sql.ResultSet#getXXXなどでマッピングできる
−:マッピングできない

(c) 日本語文字コード変換のための設定

DABroker Libraryを使用する場合に文字コード変換が実施される場所を次の図に示します。

図4-9 DABroker Libraryを使用する場合に文字コード変換が実施される場所

[図データ]

J2EEサーバ上のJDBCドライバ部分では,JavaVMのコンバータによって,Unicodeからデータベース格納コード,およびデータベース格納コードからUnicodeへの変換が実施されます。

DABroker LibraryのエンコーディングセットとOracleサーバのデータベースキャラクタセットを同じにしておく必要があります。

(d) データソースの設定

Oracleに対してXA接続でアクセスする場合,データソースの設定では,次の規則でXA Open Stringを指定する必要があります。