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 悲観的な書き込みロック。 |
READ OPTIMISTIC と同義です。 |
WRITE OPTIMISTIC_FORCE_INCREMENT と同義です。 |
修飾子と型 | メソッドと説明 |
---|---|
static LockModeType | valueOf(StringSE name) 指定された名前を持つこの型の列挙定数を返します。 |
static LockModeType[] | values() この列挙型の定数を含む配列を、宣言されている順序で返します。 |
cloneSE, compareToSE, equalsSE, finalizeSE, getDeclaringClassSE, hashCodeSE, nameSE, ordinalSE, toStringSE, valueOfSE
getClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
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(StringSE name)
name
- 返される列挙定数の名前。IllegalArgumentExceptionSE
- この列挙型に指定された名前の定数がない場合 NullPointerExceptionSE
- 引数が null の場合 Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.