検索時のロック機能はEJBコンテナが発行するSELECT文に更新ロック(注)をかける句を付加することができます。
同一トランザクションで検索後に更新処理を行う場合、そのトランザクションで、操作する行のデータをロックすることでテーブルの一貫性が保証されます。しかし、CMP Entity BeanではEJBコンテナがSQLを自動で作成するため、ユーザが直接SQL文を編集してロックをかけることができません。そこで、本機能を使用することで、コンテナが発行するSELECT文に更新ロック(注)をかけることができます。
検索時のロック機能を有効にすると、CMP Entity Beanで発行するSELECT文に以下の表の句が付加されます。更新ロックはデータベースベンダごとに指定方法が異なります。詳細は各データベースベンダのマニュアルを参照してください。
各データベースに付加される句
データベース種別 | 付加される句 |
---|---|
Symfoware | for update |
Oracle | for update of |
SQLServer | with (updlock) |
PowerGres Plus | for update |
Java DB | for update with rs |
(注)ここでは、検索処理時に参照した行にロックをかけることにより、トランザクション処理が完了するまでデータの一貫性を保証するロックのことを「更新ロック」と記載します。更新ロックされた行を別のトランザクションが参照しようとした場合には、更新ロックしたトランザクションが完了するまで排他待ち状態となります。
検索時のロック機能の定義は以下のタグで行います。詳細は「3.2.3.4 Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)」を参照してください。
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)の<consistency>/<lock-when-loaded>タグ
注意
データベースがSymfowareで、かつ、リレーションを持つテーブルが使用されるときは使用できません。