Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
悲観的ロックとは,複数のトランザクションによってデータベース上の同じレコードを更新するときに,対象となるレコードを占有ロックする方法です。あるトランザクションがあるレコードに対して悲観的ロックを掛けると,ほかのトランザクションはそのレコードを参照または更新できません(ただし,Oracleの場合,参照はできます)。悲観的ロックはJPQLを使用しているときだけ使用できます。
悲観的ロックを使用すると,ロックを取得したトランザクションが終了するまでロックの解放待ちが発生します。このため,楽観的ロックよりも同時実行性はありませんが,楽観的ロックで発生するトランザクションのコミット時のエラーを回避できます。
Query query = manager.createQuery("SELECT emp FROM Employee AS emp"); query.setHint("cosminexus.jpa.pessimistic-lock","Lock"); |
@NamedQuery( name="employee_list", query="SELECT emp FROM Employee AS emp", hints={ @QueryHint(name="cosminexus.jpa.pessimistic-lock", value="Lock") } ) @Entity public class Employee{ ・・・ } |
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.