アクセス・インテント・サービス
アクセス・インテント・サービスを使用すると、 開発者は、 アプリケーション・パーシスタンスの管理を正確に調整できるようになります。
開発者は、アクセス・インテントにより、Enterprise JavaBeans (EJB) コンテナーおよびそのエージェントが、エンティティー Bean アクセスのためのパフォーマンスを最適化できるように、アプリケーションを構成することができます。エンティティー Bean およびエンティティー Bean メソッドは、 アクセス・インテント・ポリシーを使用して構成されています。 ポリシーは、WebSphere® EJB コンテナーとパーシスタンス・ マネージャーの組み合わせ (コンテナー管理パーシスタンス (CMP) エンティティーの場合) によって、 または Bean 管理パーシスタンス (BMP) エンティティーによって直接実行されます。 アクセス・インテント・ポリシーは、 エンティティー Bean にのみ適用される点に注意してください。
事前定義されたアクセス・インテント・ポリシー
事前定義された 7 つのアクセス・インテント・ポリシーが使用可能です。ポリシーは、 さまざまな属性から構成されています。 アクセス・タイプ は、最も重要であり、分離レベル、ロックのタイプ、および Bean データがデータベースから読み取られる際に得られるロックの存続時間を制御します。
ペシミスティック・アクセス・タイプは、データがロードされるトランザクションが存続する間、ロックを維持します。 オプティミスティック・タイプは、バックエンドからデータを読み取った後、直ちにロックを解除します。 読み取り タイプは、 ランタイムがデータの更新を禁止しています。 読み取り タイプで読み取られたデータに対して更新しようとすると、 例外が発生します。 更新 タイプでは、データを変更できます。
ペシミスティック更新ポリシーは、データ・レコードの更新ロックを保持するよう設計されていますが、同じデータ・レコードにアクセスしようとする他のポリシーのスレッドをブロックしません。ペシミスティック更新ポリシーを実行する 2 つのスレッドが同じレコードにアクセスした場合、これらは、ペシミスティック読み取りまたはオプティミスティック・ポリシーを実行する他のスレッドをシリアライズ化して (ブロックはしない)、同じレコードにアクセスしようとします。
7 つのアクセス・インテント・ポリシーとその属性定義を以下にあげます。- wsPessimisticUpdate
- アクセス・タイプ = ペシミスティック更新
- コレクション有効範囲 = トランザクション
- コレクション増分 = 1
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
- wsOptimisticUpdate
- アクセス・タイプ = オプティミスティック更新
- コレクション有効範囲 = トランザクション
- コレクション増分 = 25
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
- wsOptimisticRead
- アクセス・タイプ = オプティミスティック読み取り
- コレクション有効範囲 = トランザクション
- コレクション増分 = 25
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
- wsPessimisticRead
- アクセス・タイプ = ペシミスティック読み取り
- コレクション有効範囲 = トランザクション
- コレクション増分 = 25
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
- wsPessimisticUpdate-Exclusive
- アクセス・タイプ = ペシミスティック更新
- 排他的 = true
- コレクション有効範囲 = トランザクション
- コレクション増分 = 1
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
- wsPessimisticUpdate-NoCollision
- アクセス・タイプ = ペシミスティック更新
- 衝突なし = true
- コレクション有効範囲 = トランザクション
- コレクション増分 = 25
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
- wsPessimisticUpdateWeakestLockAtLoad
- * デフォルト・ポリシー
- アクセス・タイプ = ペシミスティック更新
- プロモート = true
- コレクション有効範囲 = トランザクション
- コレクション増分 = 25
- リソース・マネージャー事前取り出し増分 = 0
- 先読みヒント = ヌル
接続の共有をサポートするには、同じトランザクションでロードされるすべてのデータが、 必ず同じ分離レベルであることが必要です。 ロードを引き起こす参加メソッドはすべて、 ペシミスティックまたはオプティミスティック・アクセス・タイプのどちらかで構成されていることを 確認してください。