331 words

lock(entity, lockMode, properties) - JPA EntityManager's method

Method
javax.persistence.EntityManager
void lock(
  Object entity,
  LockModeType lockMode,
  Map<String,Object> properties
)

Lock an entity instance that is contained in the persistence context with the specified lock mode type and with specified properties.

If a pessimistic lock mode type is specified and the entity contains a version attribute, the persistence provider must also perform optimistic version checks when obtaining the database lock. If these checks fail, the OptimisticLockException will be thrown.

If the lock mode type is pessimistic and the entity instance is found but cannot be locked:

  • the PessimisticLockException will be thrown if the database locking failure causes transaction-level rollback
  • the LockTimeoutException will be thrown if the database locking failure causes only statement-level rollback

If a vendor-specific property or hint is not recognized, it is silently ignored.

Portable applications should not rely on the standard timeout hint. Depending on the database in use and the locking mechanisms used by the provider, the hint may or may not be observed.

Parameters:
entity - entity instance
lockMode - lock mode
properties - standard and vendor-specific properties and hints
Throws:
IllegalArgumentException - if the instance is not an entity or is a detached entity
TransactionRequiredException - if there is no transaction
EntityNotFoundException - if the entity does not exist in the database when pessimistic locking is performed
OptimisticLockException - if the optimistic version check fails
PessimisticLockException - if pessimistic locking fails and the transaction is rolled back
LockTimeoutException - if pessimistic locking fails and only the statement is rolled back
PersistenceException - if an unsupported lock call is made
Since:
JPA 2.0

This documentation page is derived (with some adjustments) from the open source JPA 2 RI (EclipseLink)
and is available under the terms of the Eclipse Public License, v. 1.0 and Eclipse Distribution License, v. 1.0.
Object Relational Mapping (ORM) JPA 2 providers include Hibernate, EclipseLink, TopLink, OpenJPA and DataNucleus.
Object DB is not an ORM JPA implementation but an Object Database for Java with built in JPA 2 support.