/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.dialect.lock;
import java.io.Serializable;
import org.hibernate.StaleObjectStateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
A strategy abstraction for how locks are obtained in the underlying database.
All locking provided implementations assume the underlying database supports
(and that the connection is in) at least read-committed transaction isolation.
The most glaring exclusion to this is HSQLDB which only offers support for
READ_UNCOMMITTED isolation.
Author: Steve Ebersole See Also: - getLockingStrategy.getLockingStrategy
Since: 3.2
/**
* A strategy abstraction for how locks are obtained in the underlying database.
* <p/>
* All locking provided implementations assume the underlying database supports
* (and that the connection is in) at least read-committed transaction isolation.
* The most glaring exclusion to this is HSQLDB which only offers support for
* READ_UNCOMMITTED isolation.
*
* @see org.hibernate.dialect.Dialect#getLockingStrategy
* @since 3.2
*
* @author Steve Ebersole
*/
public interface LockingStrategy {
Acquire an appropriate type of lock on the underlying data that will
endure until the end of the current transaction.
Params: - 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 inability to locate the database row as part of acquiring
the requested lock.
- LockingStrategyException – Indicates a failure in the lock attempt
/**
* Acquire an appropriate type of lock on the underlying data that will
* endure until the end of the current transaction.
*
* @param id The id of the row to be locked
* @param version The current version (or null if not versioned)
* @param object The object logically being locked (currently not used)
* @param timeout timeout in milliseconds, 0 = no wait, -1 = wait indefinitely
* @param session The session from which the lock request originated
*
* @throws StaleObjectStateException Indicates an inability to locate the database row as part of acquiring
* the requested lock.
* @throws LockingStrategyException Indicates a failure in the lock attempt
*/
void lock(Serializable id, Object version, Object object, int timeout, SharedSessionContractImplementor session)
throws StaleObjectStateException, LockingStrategyException;
}