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