org.hibernate.dialect.lock
Class PessimisticWriteSelectLockingStrategy

java.lang.Object
  extended by org.hibernate.dialect.lock.AbstractSelectLockingStrategy
      extended by org.hibernate.dialect.lock.PessimisticWriteSelectLockingStrategy
All Implemented Interfaces:
LockingStrategy

public class PessimisticWriteSelectLockingStrategy
extends AbstractSelectLockingStrategy

A pessimistic locking strategy where the locks are obtained through select statements.

For non-read locks, this is achieved through the Dialect's specific SELECT ... FOR UPDATE syntax. This strategy is valid for LockMode.PESSIMISTIC_WRITE This class is a clone of SelectLockingStrategy.

Since:
3.5
Author:
Steve Ebersole, Scott Marlow
See Also:
Dialect.getForUpdateString(org.hibernate.LockMode), Dialect.appendLockHint(org.hibernate.LockMode, String)

Constructor Summary
PessimisticWriteSelectLockingStrategy(Lockable lockable, LockMode lockMode)
          Construct a locking strategy based on SQL SELECT statements.
 
Method Summary
protected  String generateLockString(int lockTimeout)
           
 void lock(Serializable id, Object version, Object object, int timeout, SessionImplementor session)
          Acquire an appropriate type of lock on the underlying data that will endure until the end of the current transaction.
 
Methods inherited from class org.hibernate.dialect.lock.AbstractSelectLockingStrategy
determineSql, getLockable, getLockMode, getNoWaitSql
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PessimisticWriteSelectLockingStrategy

public PessimisticWriteSelectLockingStrategy(Lockable lockable,
                                             LockMode lockMode)
Construct a locking strategy based on SQL SELECT statements.

Parameters:
lockable - The metadata for the entity to be locked.
lockMode - Indicates the type of lock to be acquired.
Method Detail

lock

public void lock(Serializable id,
                 Object version,
                 Object object,
                 int timeout,
                 SessionImplementor session)
          throws StaleObjectStateException,
                 JDBCException
Description copied from interface: LockingStrategy
Acquire an appropriate type of lock on the underlying data that will endure until the end of the current transaction.

Parameters:
id - The id of the row to be locked
version - The current version (or null if not versioned)
object - The object logically being locked (currently not used)
timeout - timeout in milliseconds, 0 = no wait, -1 = wait indefinitely
session - The session from which the lock request originated
Throws:
StaleObjectStateException - Indicates an optimistic lock failure as part of acquiring the requested database lock.
JDBCException - Indicates errors from the JDBC driver.
See Also:
LockingStrategy.lock(java.io.Serializable, java.lang.Object, java.lang.Object, int, org.hibernate.engine.SessionImplementor)

generateLockString

protected String generateLockString(int lockTimeout)
Specified by:
generateLockString in class AbstractSelectLockingStrategy


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.