WSJPA アクセス・インテントの使用
Java™ パーシスタンス API (JPA) アクセス・インテントでは、データ・ソースからデータを読み取るときの分離レベルとロック・レベルを指定します。アクセス・インテントにより、Java Database Connectivity (JDBC) の分離レベルと、データを検索するときに読み取り、更新、排他のどのロックを取得するかを制御します。
このタスクについて
注: JPA アクセス・インテントは、OpenJPA の WebSphere (WSJPA) 拡張用の JPA です。
制約事項:
- アクセス・インテントは、 Java EE サーバー環境のアプリケーションで使用可能です。
- アクセス・インテントは照会以外のエンティティー・マネージャー・インターフェース・メソッドに対して適用可能です。 照会では、照会ヒント・インターフェースを使用して、分離値および読み取りロック値を設定します。
- アクセス・インテントは、DB2® データベースでのみ使用可能です。
- アクセス・インテントは、ペシミスティック・ロック・マネージャーが使用されている場合にのみ有効です。 パーシスタンス・ユニットのプロパティー・リストに次の行を追加します。<property name="openjpa.LockManager" value="pessimistic"/>
WebSphere® EJB 2.x エンティティー Bean のアクセス・インテント | JPA アクセス・インテント | 説明 |
---|---|---|
オプティミスティック | isolation: 読み取りコミット | データは読み取られますが、ロックは保持されません。更新時にバージョン ID を使用してデータ保全性を確保します。その他のトランザクションではデータの読み取りおよび更新が可能です。 |
lockManager: オプティミスティック | ||
query Hint: ReadLockMode: READ | ||
ペシミスティック読み取り | isolation: 反復可能読み取り | 共有ロックを使用してデータを読み取ります。データの更新を試行するその他のトランザクションはブロックされます。 |
lockManager: オプティミスティック | ||
query Hint: ReadLockMode: READ | ||
ペシミスティック更新 | isolation: 反復可能読み取り | 更新ロックまたは排他ロックを使用してデータを検索します。その他の書き込みは、コミットまでブロックされます。このアクセス・インテントを使用すると、複数の書き込み機能がある場合にデータへの更新アクセスをシリアライズできます。 |
lockManager: ペシミスティック | ||
query Hint: ReadLockMode: WRITE | ||
ペシミスティック排他 | isolation: シリアライズ可能 | 更新ロックまたは排他ロックを使用してデータを検索します。その他の書き込みは、コミットまでブロックされます。このアクセス・インテントを使用すると、複数の書き込み機能がある場合にデータへの更新アクセスをシリアライズできます。 |
lockManager: ペシミスティック | ||
query Hint: ReadLockMode: WRITE |
トランザクション・コンテキストに対して TaskName が以下のいずれかによって設定されます。
- WebSphere ローカル・トランザクション (EJB 指定なしのトランザクション)、 コンテナー管理トランザクション (CMT) での JTA グローバル・トランザクション、または Bean 管理トランザクション (BMT) でのユーザー開始グローバル・トランザクションを使用してトランザクションが開始されると、EJB コンテナーで TaskName が自動的に設定されます。
- TaskName は、JPA 用に提供されている TaskNameAccessor API を使用してアプリケーション内に手動で設定されます。
タスク名を使用した場合は、すべてのエンティティーにわたってアプリケーション有効範囲を持つ persistence.xml ファイルでのアクセス・インテントの指定ではなく、要求有効範囲に対するアクセス・インテントの指定がサポートされます。 多くの場合、 照会は、多くの異なるトランザクション・コンテキストで使用されるメソッドまたはコンポーネントに含まれます。これらのコンテキストの一部は反復可能読み取りおよび更新ロック・インテントを必要としますが、その他のコンテキストでは必要ありません。
分離レベルおよび読み取りロックは以下に対して指定できます。
- persistence.xml ファイル内のアプリケーションの有効範囲。これらの分離レベルおよび読み取りロックのタイプは persistence.xml ファイルで指定されるプロパティーです。 これらのプロパティーはパーシスタンス・ユニットで定義されるすべてのエンティティーに適用されます。
- タスク名でのトランザクション有効範囲。 トランザクション有効範囲ヒントがアプリケーション有効範囲値をオーバーライドします。
- 照会ヒントを持つ照会インスタンス。照会ヒントを使用すると、 特定の照会インスタンスに対して分離および ReadLockMode をオーバーライドできます。照会ヒントは、アプリケーション有効範囲またはトランザクション有効範囲で指定された分離レベルおよび読み取りロックをオーバーライドします。
手順
- TaskNameAccessor API を使用した TaskName の設定 このタスクでは、TaskNameAccessor API を使用して実行時に JPA TaskName を設定する方法について説明します。
- JPA パーシスタンス・ユニットでの TaskName の指定 このタスクでは、JPA パーシスタンス・ユニットで TaskName を指定する方法について説明します。