Package org.apache.openjpa.jdbc.kernel
Class PessimisticLockManager
java.lang.Object
org.apache.openjpa.kernel.AbstractLockManager
org.apache.openjpa.kernel.VersionLockManager
org.apache.openjpa.jdbc.kernel.PessimisticLockManager
- All Implemented Interfaces:
JDBCLockManager,LockLevels,LockManager,Closeable
- Direct Known Subclasses:
MixedLockManager
Lock manager that uses exclusive database locks.
- Author:
- Marc Prud'hommeaux
-
Field Summary
FieldsFields inherited from class org.apache.openjpa.kernel.AbstractLockManager
ctx, logFields inherited from interface org.apache.openjpa.kernel.LockLevels
LOCK_NONE, LOCK_READ, LOCK_WRITE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckLock(ResultSet rs, OpenJPAStateManager sm, int timeout) This method is to provide override for non-JDBC or JDBC-like implementation of checking lock from the result set.protected ResultSetexecuteQuery(Connection conn, PreparedStatement stmnt, SQLBuffer sql) This method is to provide override for non-JDBC or JDBC-like implementation of executing query.getLockRows(DBDictionary dict, Object id, ClassMapping mapping, JDBCFetchConfiguration fetch, SQLFactory factory) getStore()voidNotification that the given instance was loaded via a result set produced by a FOR UPDATE select.protected voidlockInternal(OpenJPAStateManager sm, int level, int timeout, Object sdata, boolean postVersionCheck) Marks the instance's transactional status in accordance with the settings ofVersionLockManager.getVersionCheckOnReadLock()andVersionLockManager.getVersionUpdateOnWriteLock().protected voidlockJoinTables(List<SQLBuffer> sqls, DBDictionary dict, Object id, ClassMapping mapping, JDBCFetchConfiguration fetch, SQLFactory factory) protected PreparedStatementprepareStatement(Connection conn, SQLBuffer sql) This method is to provide override for non-JDBC or JDBC-like implementation of preparing statement.booleanselectForUpdate(Select sel, int lockLevel) Return whether to issue the given select FOR UPDATE, depending on the capabilities of the dictionary and the fetch configuration.voidsetContext(StoreContext ctx) Set the context this lock manager is associated with.Methods inherited from class org.apache.openjpa.kernel.VersionLockManager
getLockLevel, getVersionCheckOnReadLock, getVersionUpdateOnWriteLock, lock, optimisticLockInternal, refreshLock, release, setLockLevel, setVersionCheckOnReadLock, setVersionUpdateOnWriteLockMethods inherited from class org.apache.openjpa.kernel.AbstractLockManager
beginTransaction, close, endTransaction, getContext, lockAll, skipRelationFieldLockMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.openjpa.jdbc.kernel.JDBCLockManager
skipRelationFieldLockMethods inherited from interface org.apache.openjpa.kernel.LockManager
beginTransaction, close, endTransaction, getLockLevel, lock, lockAll, refreshLock, release
-
Field Details
-
LOCK_DATASTORE_ONLY
public static final int LOCK_DATASTORE_ONLY- See Also:
-
_store
-
-
Constructor Details
-
PessimisticLockManager
public PessimisticLockManager()
-
-
Method Details
-
setContext
Description copied from interface:LockManagerSet the context this lock manager is associated with. This will be invoked in the lock manager before any other methods are called.- Specified by:
setContextin interfaceLockManager- Overrides:
setContextin classAbstractLockManager
-
selectForUpdate
Description copied from interface:JDBCLockManagerReturn whether to issue the given select FOR UPDATE, depending on the capabilities of the dictionary and the fetch configuration.- Specified by:
selectForUpdatein interfaceJDBCLockManager
-
loadedForUpdate
Description copied from interface:JDBCLockManagerNotification that the given instance was loaded via a result set produced by a FOR UPDATE select.- Specified by:
loadedForUpdatein interfaceJDBCLockManager
-
lockInternal
protected void lockInternal(OpenJPAStateManager sm, int level, int timeout, Object sdata, boolean postVersionCheck) Description copied from class:VersionLockManagerMarks the instance's transactional status in accordance with the settings ofVersionLockManager.getVersionCheckOnReadLock()andVersionLockManager.getVersionUpdateOnWriteLock(). Override to perform additional locking.- Overrides:
lockInternalin classVersionLockManager- See Also:
-
getLockRows
protected List<SQLBuffer> getLockRows(DBDictionary dict, Object id, ClassMapping mapping, JDBCFetchConfiguration fetch, SQLFactory factory) -
lockJoinTables
protected void lockJoinTables(List<SQLBuffer> sqls, DBDictionary dict, Object id, ClassMapping mapping, JDBCFetchConfiguration fetch, SQLFactory factory) -
getStore
-
prepareStatement
This method is to provide override for non-JDBC or JDBC-like implementation of preparing statement.- Throws:
SQLException
-
executeQuery
protected ResultSet executeQuery(Connection conn, PreparedStatement stmnt, SQLBuffer sql) throws SQLException This method is to provide override for non-JDBC or JDBC-like implementation of executing query.- Throws:
SQLException
-
checkLock
This method is to provide override for non-JDBC or JDBC-like implementation of checking lock from the result set.- Throws:
SQLException
-