WSJPA アクセス・インテントの使用

Java™ パーシスタンス API (JPA) アクセス・インテントでは、データ・ソースからデータを読み取るときの分離レベルとロック・レベルを指定します。アクセス・インテントにより、Java Database Connectivity (JDBC) の分離レベルと、データを検索するときに読み取り、更新、排他のどのロックを取得するかを制御します。

このタスクについて

アプリケーション・サーバーの JPA パーシスタンス・プロバイダーについて、 アプリケーションで TaskName に基づいて分離および ReadLockMode を指定できます。この TaskName によって、以下の特性の適用に関して、さらに精緻な制御が可能になります。 アプリケーションでは、パーシスタンス・ユニットで定義されている各 TaskName に対して、エンティティー・タイプおよび対応するアクセス・インテントのセットを定義します。
注: JPA アクセス・インテントは、OpenJPA の WebSphere (WSJPA) 拡張用の JPA です。
制約事項:
  • アクセス・インテントは、 Java EE サーバー環境のアプリケーションで使用可能です。
  • アクセス・インテントは照会以外のエンティティー・マネージャー・インターフェース・メソッドに対して適用可能です。 照会では、照会ヒント・インターフェースを使用して、分離値および読み取りロック値を設定します。
  • アクセス・インテントは、DB2® データベースでのみ使用可能です。
  • アクセス・インテントは、ペシミスティック・ロック・マネージャーが使用されている場合にのみ有効です。 パーシスタンス・ユニットのプロパティー・リストに次の行を追加します。<property name="openjpa.LockManager" value="pessimistic"/>
表 1. アクセス・インテントのプロパティーと説明. 次の表に、Enterprise JavaBeans (EJB) 2.x エンティティー Bean のアクセス・インテントのプロパティーと JPA アクセス・インテントのプロパティーとの比較を示します。
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 をオーバーライドできます。照会ヒントは、アプリケーション有効範囲またはトランザクション有効範囲で指定された分離レベルおよび読み取りロックをオーバーライドします。

手順

  1. TaskNameAccessor API を使用した TaskName の設定 このタスクでは、TaskNameAccessor API を使用して実行時に JPA TaskName を設定する方法について説明します。
  2. JPA パーシスタンス・ユニットでの TaskName の指定 このタスクでは、JPA パーシスタンス・ユニットで TaskName を指定する方法について説明します。

次のタスク

アクセス・インテントについて詳しくは、トピック『アクセス・インテント・サービス』を参照してください。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_accessintentjpa
ファイル名:tejb_accessintentjpa.html