JPAロック設定
Lock
テーブルデータ競合のロック処理方法の説明.
楽観ロック
ほとんどは衝突しないと仮定したロック方式だ.
コンカレント・リクエストは、競合の可能性が低い場合に例外が発生します.
ロックというより衝突検出に近い.OptimisticLockException
異常が発生しました.
を選択します。
例
@Entity
public class User {
..
@Version
private int version;
}
@Version
を記入するだけです.エンティティの変更時にクエリのバージョンと同じかどうかを確認します.バージョンが異なる場合は例外が発生します.
悲観ロック
これは、データを修正する可能性が高いという悲観的な前提です.プリエンプトロックとも呼ばれます.
同時要求による競合を回避するために、一貫性を確保します.
しかし、性能の観点から見ると、損失に耐えなければならない.
を選択します。
PESSIMISTIC_READ
:Shared Lockを取得し、更新せず、削除しない.PESSIMISTIC_WRITE
:排他ロック(データベースが提供するβロック)を取得し、読み取り、更新、削除しない.PESSIMISTIC_FORCE_INCREMENT
:PESSIMISTIC WRITEと同様に、エンティティのバージョン属性を追加できます.例
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select u from user u")
User findUsers();
Reference
この問題について(JPAロック設定), 我々は、より多くの情報をここで見つけました https://velog.io/@haeyon098/JPA-Lock-설정テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol