Cosminexus 機能解説

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

9.4.6 Oracleと接続する場合の前提条件と注意事項

ここでは,Oracleと接続する場合の前提条件と注意事項について説明します。

<この項の構成>
(1) Oracle9iの場合の前提条件
(2) Oracle10gの場合の前提条件
(3) Oracleと接続する場合の注意事項

(1) Oracle9iの場合の前提条件

Oracle9iの場合の前提条件について示します。

(2) Oracle10gの場合の前提条件

Oracle10gの場合の前提条件について示します。

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

Oracleと接続する場合,使用するJDBCドライバによって,機能差があります。

ここでは,Oracleに接続する場合の,Cosminexus DABroker LibraryとOracle JDBC Thin Driverの機能の差異と,使用時の注意について説明します。

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

Oracle接続で使用できるJ2EEコンポーネントを,JDBCドライバごとに次の表に示します。

表9-19 J2EEコンポーネントと使用できるJDBCドライバ

J2EEコンポーネント Cosminexus DABroker Library Oracle JDBC Thin Driver
サーブレット/JSP
Stateless Session Bean
Stateful Session Bean
Entity Bean(BMP)
Entity Bean(CMP2.0) ×
Message-driven Bean

(凡例) ○:使用できる  ×:使用できない


(b) 型マッピングの相違点

Cosminexus DABroker LibraryおよびOracle JDBC Thin Driverでは,Javaの型とOracleのSQL型の間で,マッピングが一部異なります。Javaの型とOracleのSQL型のマッピングを,JDBCドライバごとに表に示します。

表9-20 Javaの型とOracleのSQL型のマッピング(Cosminexus DABroker Library)

メソッド 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などでマッピングできる
−:マッピングできない

表9-21 Javaの型とOracleのSQL型のマッピング(Oracle JDBC Thin Driver)

メソッド 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などでマッピングできる
−:マッピングできない

この表は,Oracle9iのマッピングです。詳細やOracle10gについては,Oracleのマニュアルを参照してください。

(c) 日本語文字コード変換の相違点とOracle JDBC Thin Driverでの文字化けを回避するための設定

JDBCドライバでは,データをデータベースに格納するとき,およびデータベースからデータを取り出すときに,Unicodeとデータベース格納コードとの間で適宜,文字コードを変換します。文字コード変換をする場所は,JDBCドライバによって異なります。JDBCドライバごとに文字コード変換が実施される場所について説明します。

●Cosminexus DABroker Libraryを使用する場合

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

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

[図データ]

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

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

●Oracle JDBC Thin Driverを使用する場合

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

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

[図データ]

図中の場所ごとに実行される文字コード変換について,次の表に示します。

表9-22 Oracle JDBC Thin Driverを使用する場合に文字コード変換が実施される場所

場所 実施される内容
1 ネットワーク,ファイルなどの外部データをJ2EEサーバで読み込む時に,外部データコードからUnicodeに変換されます。
2 J2EEサーバで読み込んだデータをOracleサーバに格納する時に,UnicodeからUTF-8に変換されます。J2EEサーバ上のJDBCドライバ部分で実施されるコード変換です。
3 Oracleサーバのコンバータによって,UTF-8からデータベース格納コードへの変換が実施されます。Oracleサーバ上で実施されるコード変換です。
4 Oracleサーバのコンバータによって,データベース格納コードからUTF-8への変換が実施されます。
5 OracleサーバからJ2EEサーバが格納したデータを取得する時に,UTF-8からUnicodeに変換されます。
6 J2EEサーバで取得したデータをネットワークやファイルなどに書き出す時に,Unicodeから外部データコードに変換されます。

Oracle JDBC Thin Driverを使用する場合,JavaVMとOracleサーバのコンバータがサポートしているマッピング規則の相違から,文字化けが発生することがあります。文字化けは,外部データの文字コードとデータベース格納コードの組み合わせや,文字コード変換を行うコンバータの組み合わせによって発生します。

文字化けを回避するためには,外部データの文字コードと,データベース格納コードを,次に示す組み合わせで使用してください。