前述した、「Concurrency Control (Locking Strategy)」と「トランザクション分離レベル」に加え、アクセス・タイプとして、「Read処理」か「Update処理」かを加味して、7種類「アクセス・インテント」ポリシーの中から1つを決定します。「アクセス・インテント」ポリシーの設定を以下にまとめます。
| ポリシー (プロファイル名) | Concurrency Control | アクセス・タイプ | トランザクション分離レベル | 
|---|---|---|---|
| wsOptimisticRead | optimistic | read | Read Committed | 
| wsOptimisticUpdate | optimistic | update | Read Committed | 
| wsPessimisticUpdate -NoCollision | pessimistic | update | Read Committed | 
| wsPessimisticRead | pessimistic | read | Repeatable Read | 
| (Oracle:Read Committed) wsPessimisticUpdate | pessimistic | update | Repeatable Read | 
| (Oracle:Read Committed) wsPessimisticUpdate-WeakestLockAtLoad (省略時ポリシー) | pessimistic | update | Repeatable Read | 
| (Oracle:Read Committed) wsPessimisticUpdate-Exclusive | pessimistic | update | Serializable | 
| 表3 「アクセス・インテント」ポリシー | |||
WASでの「アクセス・インテント」ポリシーの設定は、AST(あるいは、RAD)を使用します。[EJBデプロイメント記述子]→[アクセス]タブ→[WebSphere拡張機能]→[Entities 2.x のデフォルトのアクセス・インテント(Bean レベル)]で、各Entity Beanに対して設定します。
図6は、「wsOptimisticRead」を指定した例です。
図7は、「wsPessimisticUpdate-WeakestLockAtLoad」(デフォルト値)を指定した例です。
WASでは、トランザクションをまたがるデータのキャッシュを設定できます。これは、「Lifetime in Cache」あるいは、「データ・キャッシュ」と呼ばれるオプションです。
指定したキャッシュ生存時間が経過するまで、データはキャッシュに保持されます。データがキャッシュに保持されている間は、そのデータに対するリクエストに対して、DBへの問い合わせは行われません。データ・キャッシュの「Invalidation Timer」(無効果までの時間)を指定することにより、キャッシュ内でのデータの保持時間を設定します。
AST(あるいは、RAD)を用い、「キャッシュ使用での存続時間」および「キャッシュ内での存続時間」を指定します。「キャッシュ使用での存続時間」には、「OFF」「ELAPSED_TIME」「CLOCK_TIME」「WEEK_TIME」のいずれかを指定します。
WASでは、EJBの「コミット・オプション」の設定をすることにより、Entity Beanキャッシュを利用可能です。Entity Beanに対応するデータをDBからいつロードし、どのようにキャッシュするかを設定でき、コミット・オプション A、B、Cに対応しています。
コミット・オプションの設定は、AST(あるいは、RAD)を使用します(図9)。
[Beanのキャッシュ]の設定で、[アクティブ化]と[ロード]の組み合わせで決定されます(表4)。
| コミット・オプション | アクティブ化 | ロード | 
|---|---|---|
| Option A | ONCE | ACTIVATION | 
| Option B | ONCE | TRANSACTION | 
| Option C | TRANSACTION | TRANSACTION | 
| 表4 コミット・オプションの指定 | ||
[アクティブ化]の「ONCE」は、Beanが最初にアクセスされた際にアクティブになります。「TRANSACTION」は、トランザクション開始時にアクティブになります(省略時設定)。
[ロード]の「ACTIVATION」は、Beanがアクティブになった際にロードされ、DBに対する排他的アクセスを行います。「TRANSACTION」は、トランザクション開始時にBeanがロードされ、DBへは共有アクセスを行います。
Copyright © ITmedia, Inc. All Rights Reserved.