public enum LockModeType extends java.lang.Enum<LockModeType>
EntityManagerメソッドの1つ(lockやfind、refresh)または
Query.setLockMode()、TypedQuery.setLockMode()メソッドのいずれかにLockModeType
引数を渡すことによって指定できます。
ロックモードは楽観ロック、悲観ロックのどちらかを指定するのに使用されます。
楽観ロックはLockModeType.OPTIMISTICおよびLockModeType.OPTIMISTIC_FORCE_INCREMENT
を使用して指定されます。
ロックモードの値LockModeType.READおよびLockModeType.WRITEはそれぞれOPTIMISTIC
およびOPTIMISTIC_FORCE_INCREMENTと同じ意味です。
新しいアプリケーションでは後者を使用する方が好ましいでしょう。
LockModeType.OPTIMISTICおよびLockModeType.OPTIMISTIC_FORCE_INCREMENTのロックが要求された時の意味は次のとおりです。
トランザクションT1がバージョン管理されたオブジェクトでLockModeType.OPTIMISTIC型のロックを呼び出したした場合、
エンティティマネージャーは次のいずれの現象も起こらないようにする必要があります。
ロックモードはP1とP2の両方の現象を防止する必要があります。
さらに、LockModeType.OPTIMISTIC_FORCE_INCREMENTがバージョン管理されたオブジェクトで呼び出された場合は、
エンティティのバージョンカラムが強制的に更新(インクリメント)されます。
JPAの実装ではバージョン管理されないオブジェクトに対する楽観ロックモードのサポートは必須ではありません。
そのようなロックの呼び出しをサポートしていない場合はPersistenceExceptionを投げる必要があります。
ロックモードLockModeType.PESSIMISTIC_READおよびLockModeType.PESSIMISTIC_WRITE、
LockModeType.PESSIMISTIC_FORCE_INCREMENTは長期のデータベースロックを即時に取得するために使用されます。
LockModeType.PESSIMISTIC_READおよびLockModeType.PESSIMISTIC_WRITE、
LockModeType.PESSIMISTIC_FORCE_INCREMENTのロックが要求された時の意味は次のとおりです。
トランザクションT1がオブジェクトでLockModeType.PESSIMISTIC_READもしくはLockModeType.PESSIMISTIC_WRITE型のロックを呼び出したした場合、
エンティティマネージャーは次のいずれの現象も起こらないようにする必要があります。
LockModeType.PESSIMISTIC_WRITEのロックをエンティティのインスタンスで取得する事で
エンティティデータを更新を試みるトランザクションの処理を強制的に直列化することができます。
LLockModeType.PESSIMISTIC_READのロックを使用する事で、トランザクションの終了時にデータを再読み込みしてロックを取得する必要がなく、
また他のトランザクションのデータを読み取りをブロックすることもなく、反復可能な読み取りセマンティクスを使用してデータを問い合わせできます。
LockModeType.PESSIMISTIC_WRITEのロックは、データの問い合わせに使用できますが、
並行更新トランザクション間でデッドロックや更新の失敗の可能性が高くなります。
JPAの実装ではバージョン管理されたエンティティと同様にバージョン管理されていないエンティティでLockModeType.PESSIMISTIC_READ
LockModeType.PESSIMISTIC_WRITE型のロックの使用をサポートする必要があります。
ロックを取得できず、データベースのロックの失敗によりトランザクションレベルのロールバックが発生した場合、プロバイダはPessimisticLockExceptionを投げ、
JTAトランザクションまたはEntityTransactionにロールバックのマークが付いていることを保証する必要があります。
ロックを取得できず、データベースのロックの失敗によりステートメントレベルのロールバックのみが発生した場合、
プロバイダはLockTimeoutExceptionを投げる必要があります。
(トランザクションにロールバックをマークしてはいけません)
| 列挙型定数と説明 |
|---|
NONE
ロックしない。
|
OPTIMISTIC
楽観ロック。
|
OPTIMISTIC_FORCE_INCREMENT
バージョンのアップデートを伴う楽観ロック。
|
PESSIMISTIC_FORCE_INCREMENT
バージョンのアップデートを伴う悲観書き込みロック。
|
PESSIMISTIC_READ
悲観読み込みロック。
|
PESSIMISTIC_WRITE
悲観書き込みロック。
|
READ
OPTIMISTICと同じ意味。 |
WRITE
OPTIMISTIC_FORCE_INCREMENTと同じ意味。 |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
static LockModeType |
valueOf(java.lang.String name)
指定した名前を持つこの型の列挙型定数を返します。
|
static LockModeType[] |
values()
この列挙型の定数を含む配列を宣言されている順序で返します。
|
public static final LockModeType READ
OPTIMISTICと同じ意味。
新しいアプリケーションではOPTIMISTICが好ましい。public static final LockModeType WRITE
OPTIMISTIC_FORCE_INCREMENTと同じ意味。
新しいアプリケーションではOPTIMISTIC_FORCE_IMCREMENTが好ましい。public static final LockModeType OPTIMISTIC
public static final LockModeType OPTIMISTIC_FORCE_INCREMENT
public static final LockModeType PESSIMISTIC_READ
public static final LockModeType PESSIMISTIC_WRITE
public static final LockModeType PESSIMISTIC_FORCE_INCREMENT
public static final LockModeType NONE
public static LockModeType[] values()
for(LockModeType c: LockModeType.values()) System.out.println(c);
public static LockModeType valueOf(java.lang.String name)
name - 返される列挙型定数の名前。java.lang.IllegalArgumentException - この列挙型に、指定した名前の定数がない場合java.lang.NullPointerException - 引数がnullの場合Translated by @megascus.