public enum LockModeType extends EnumSE<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 のロックを呼び出すと、エンティティのバージョン列も強制的に更新(インクリメント)されます。
バージョン管理されていないオブジェクトでの楽観的ロックモードの使用をサポートするために、永続性の実装は必要ありません。このようなロック呼び出しをサポートできない場合は、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 のロックを取得して、エンティティデータを更新しようとするトランザクション間で直列化を強制できます。LockModeType.PESSIMISTIC_READ を使用したロックを使用すると、トランザクションの最後にデータを再読み取りしてロックを取得したり、データの読み取りをブロックしたりすることなく、繰り返し読み取りセマンティクスを使用してデータを照会できます。LockModeType.PESSIMISTIC_WRITE を使用したロックは、データを照会するときに使用でき、同時更新トランザクション間でデッドロックまたは更新失敗の可能性が高くなります。
永続性の実装は、バージョン管理されていないエンティティとバージョン管理されたエンティティで、型 LockModeType.PESSIMISTIC_READ LockModeType.PESSIMISTIC_WRITE のロックの使用をサポートする必要があります。
ロックを取得できず、データベースのロックに失敗するとトランザクションレベルのロールバックが発生する場合、プロバイダーは PessimisticLockException をスローし、JTA トランザクションまたは EntityTransaction がロールバック用にマークされていることを確認する必要があります。
ロックを取得できず、データベースのロックに失敗するとステートメントレベルのロールバックのみが発生する場合、プロバイダーは LockTimeoutException をスローする必要があります(トランザクションにロールバックのマークを付けてはなりません)。
| 列挙型定数と説明 |
|---|
NONE ロックなし。 |
OPTIMISTIC 楽観的ロック。 |
OPTIMISTIC_FORCE_INCREMENT 楽観的ロック、バージョン更新あり。 |
PESSIMISTIC_FORCE_INCREMENT 悲観的な書き込みロック、バージョン更新あり。 |
PESSIMISTIC_READ 悲観的な読み取りロック。 |
PESSIMISTIC_WRITE 悲観的な書き込みロック。 |
READOPTIMISTIC と同義です。 |
WRITEOPTIMISTIC_FORCE_INCREMENT と同義です。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
static LockModeType | valueOf(StringSE name) 指定された名前を持つこの型の列挙定数を返します。 |
static LockModeType[] | values() この列挙型の定数を含む配列を、宣言されている順序で返します。 |
cloneSE, compareToSE, equalsSE, finalizeSE, getDeclaringClassSE, hashCodeSE, nameSE, ordinalSE, toStringSE, valueOfSEgetClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEpublic 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(StringSE name)
name - 返される列挙定数の名前。IllegalArgumentExceptionSE - この列挙型に指定された名前の定数がない場合 NullPointerExceptionSE - 引数が null の場合 Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.