この項では、EJB 2.x のモジュールを構成するデータ・アクセス・コンポーネントの分離レベルを設定する基準と、 その影響について説明します。
さまざまなコード仕様に対する分離レベル要件
Enterprise JavaBean (EJB) 1.1 のモジュールでは、メソッド・レベルまたは Bean レベルで 分離レベルを設定できます。この機能は、EJB 2.x のモジュール にアセンブルされる、 コンテナー管理パーシスタンス (CMP) 1.1 の Bean にも適用されます。 (WebSphere Application Server では、CMP Bean のデプロイメント記述子が、 モジュール全体のバージョンに関係なく、バージョン・レベル 1.1 を宣言することができます。)
ただし、メソッド・レベルまたは Bean レベルで分離レベルを設定する機能は、 EJB 2.x モジュール内の他のエンタープライズ Bean (CMP 2.x Bean など) には適用されません 。 WebSphere Application Server バージョン 5.0 では、 この機能を EJB 2.0 のモジュールから除去し、結果的に接続の効率を高めた アーキテクチャーを実現しています。
2.x CMP Bean で使用される接続での分離レベル
EJB 2.x モジュールでは、CMP 2.x Bean が新規データ・ソースを使用して バックエンド・データベースにアクセスする際に、分離レベルは、 この Bean または呼び出しメソッドに割り当てられるアクセス・インテントのタイプに基づき、 WebSphere Application Server ランタイムによって決定されます。 その他の非 CMP 接続ユーザーも、この同じデータ・ソースにアクセスでき、 アクセス・インテントとアプリケーション・プロファイルのサポートを使用して、並行性制御を管理することができます。
他の 2.x エンタープライズ Bean および他の非 CMP コンポーネントで使用される接続
他のすべての JDBC 接続インスタンス (CMP Bean によって使用される接続を除く) では、 データ・ソース・リソース参照上で分離レベルを指定できます。 グローバル・トランザクションで実行される共用可能接続の場合は、 このメソッドが、接続の isolationLevel を設定する唯一の方法です。 グローバル・トランザクションで実行される共用可能接続で setTransactionIsolation() メソッドを介して、 分離レベルを直接設定できません。 接続で異なる分離レベルを使用するには、 異なるリソース参照を提供する必要があります。 これらのデフォルトは、アセンブリー・ツールから設定します。
各リソース参照は、1 つの分離レベルに関連しています。 ユーザーのアプリケーションがこのリソース参照の Java Naming and Directory Interface (JNDI) 名を使用して、 データ・ソースをルックアップする際に、 このリソース参照を使用してこのデータ・ソースから戻されるすべての接続の分離レベルは同じです。
複数の分離レベルを持つ共用可能接続を使用する必要があるコンポーネントは、 各リソース参照に異なる JNDI 名を指定して、複数のリソース参照を作成することができます。 また、そのコードを使用して、必要とする分離レベルの該当するデータ・ソースをルックアップできます。 このようにして、異なる分離レベルが使用可能になっている別々の接続を使用します。
分離レベルを指定しない場合:
本製品では、非 CMP アプリケーション・モジュールの場合、 データ・ソース・リソース参照上で分離レベルを設定する必要はありません。 リソース参照で分離レベルを設定しない場合、あるいは TRANSACTION_NONE を設定する場合、 WebSphere Application Server ランタイムはそのデータ・ソースに対してデフォルトの分離レベルを使用します。 アプリケーション・サーバーは、JDBC ドライバーに基づくデフォルト設定を使用します。
ほとんどのドライバーでは、WebSphere Application Server は、 TRANSACTION_REPEATABLE_READ をデフォルトの分離レベルとして使用します。ただし Oracle ドライバーでは、 TRANSACTION_READ_COMMITTED という分離レベルが使用されます。次の早見表を参照してください。
データベース: | DB2 | Oracle | Sybase | Informix | Cloudscape | SQL Server |
デフォルトの分離レベル: (非 CMP エンティティーによる接続の場合) |
RR | RC | RR | RR | RR | RR |