Hibernate LockMode

LockMode.NONE :有缓存用缓存,没缓存则从数据库读 

LockMode.READ:直接从数据库读,不使用缓存数据

LockMode.WRITE:在insertupdate数据的时候,HIBERNATE内部使用的。

以上3种均为HIBERNATE级别的锁,也就是缓存级别的锁。

下面2种为数据库级别的锁:

LockMode.UPGRADE:相当于SQL语句selectforupdate,被select的数据都被数据库锁住了,不能被其他事务修改。

LockMode. UPGRADE_NOWAIT :是ORACLE数据库特有的select for update nowait

NONE

public static final LockMode NONE
No lock required. If an object is requested with this lock mode, a READ lock will be obtained if it is necessary to actually read the state from the database, rather than pull it from a cache.This is the "default" lock mode.

READ

public static final LockMode READ
A shared lock. Objects in this lock mode were read from the database in the current transaction, rather than being pulled from a cache.

UPGRADE

public static final LockMode UPGRADE
Deprecated. instead use PESSIMISTIC_WRITEAn upgrade lock. Objects loaded in this lock mode are materialized using an SQL select ... for update.

UPGRADE_NOWAIT

public static final LockMode UPGRADE_NOWAIT
Attempt to obtain an upgrade lock, using an Oracle-style select for update nowait. The semantics of this lock mode, once obtained, are the same as UPGRADE.

WRITE

public static final LockMode WRITE
A WRITE lock is obtained when an object is updated or inserted. This lock mode is for internal use only and is not a valid mode for load() or lock() (both of which throw exceptions if WRITE is specified).

FORCE

public static final LockMode FORCE
Deprecated. instead use PESSIMISTIC_FORCE_INCREMENTSimiliar to UPGRADE except that, for versioned entities, it results in a forced version increment.

OPTIMISTIC

public static final LockMode OPTIMISTIC
Optimisticly assume that transaction will not experience contention for entities. The entity version will be verified near the transaction end.

OPTIMISTIC_FORCE_INCREMENT

public static final LockMode OPTIMISTIC_FORCE_INCREMENT
Optimisticly assume that transaction will not experience contention for entities. The entity version will be verified and incremented near the transaction end.

PESSIMISTIC_READ

public static final LockMode PESSIMISTIC_READ
Implemented as PESSIMISTIC_WRITE. TODO: introduce separate support for PESSIMISTIC_READ

PESSIMISTIC_WRITE

public static final LockMode PESSIMISTIC_WRITE
Transaction will obtain a database lock immediately. TODO: add PESSIMISTIC_WRITE_NOWAIT

PESSIMISTIC_FORCE_INCREMENT

public static final LockMode PESSIMISTIC_FORCE_INCREMENT
Transaction will immediately increment the entity version.

相关推荐