18.8.7 データベースと接続するときの注意事項
ここでは,DABroker Libraryを使用してHiRDBまたは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では,次のコンポーネントを使用できます。
-
サーブレット/JSP
-
Stateless Session Bean
-
Stateful Session Bean
-
Entity Bean(BMP)
-
Entity Bean(CMP2.0)
-
Message-driven Bean
(b) 型マッピング
DABroker Libraryを使用する場合の,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 |
○ |
○ |
○ |
○ |
− |
○ |
○ |
○ |
○ |
○ |
(c) 日本語文字コード変換のための設定
DABroker Libraryを使用する場合に文字コード変換が実施される場所を次の図に示します。
J2EEサーバ上のJDBCドライバ部分では,JavaVMのコンバータによって,Unicodeからデータベース格納コード,およびデータベース格納コードからUnicodeへの変換が実施されます。
DABroker LibraryのエンコーディングセットとOracleサーバのデータベースキャラクタセットを同じにしておく必要があります。
(d) データソースの設定
Oracleに対してXA接続でアクセスする場合,データソースの設定では,次の規則でXA Open Stringを指定する必要があります。
-
指定する文字列は,Oracleのマニュアルに記載されている規則に従って指定してください。キーワードなどの区切り文字が不正な場合は,Oracleライブラリ内でアプリケーションエラーが発生する場合がありますのでご注意ください。
-
指定する文字列には必ず,「Threads=true」を指定してください。「Threads=true」が指定されていない場合は,Oracleライブラリ内でアプリケーションエラーが発生,またはSQL実行時にエラーが発生することがありますのでご注意ください。