Java Code Examples for org.hibernate.LockMode#FORCE
The following examples show how to use
org.hibernate.LockMode#FORCE .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: LockModeConverter.java From lams with GNU General Public License v2.0 | 6 votes |
/** * Convert from the Hibernate specific LockMode to the JPA defined LockModeType. * * @param lockMode The Hibernate LockMode. * * @return The JPA LockModeType */ public static LockModeType convertToLockModeType(LockMode lockMode) { if ( lockMode == LockMode.NONE ) { return LockModeType.NONE; } else if ( lockMode == LockMode.OPTIMISTIC || lockMode == LockMode.READ ) { return LockModeType.OPTIMISTIC; } else if ( lockMode == LockMode.OPTIMISTIC_FORCE_INCREMENT || lockMode == LockMode.WRITE ) { return LockModeType.OPTIMISTIC_FORCE_INCREMENT; } else if ( lockMode == LockMode.PESSIMISTIC_READ ) { return LockModeType.PESSIMISTIC_READ; } else if ( lockMode == LockMode.PESSIMISTIC_WRITE || lockMode == LockMode.UPGRADE || lockMode == LockMode.UPGRADE_NOWAIT || lockMode == LockMode.UPGRADE_SKIPLOCKED) { return LockModeType.PESSIMISTIC_WRITE; } else if ( lockMode == LockMode.PESSIMISTIC_FORCE_INCREMENT || lockMode == LockMode.FORCE ) { return LockModeType.PESSIMISTIC_FORCE_INCREMENT; } throw new AssertionFailure( "unhandled lock mode " + lockMode ); }
Example 2
Source File: ResultSetMappingBinder.java From cacheonix-core with GNU Lesser General Public License v2.1 | 6 votes |
private static LockMode getLockMode(String lockMode) { if ( lockMode == null || "read".equals( lockMode ) ) { return LockMode.READ; } else if ( "none".equals( lockMode ) ) { return LockMode.NONE; } else if ( "upgrade".equals( lockMode ) ) { return LockMode.UPGRADE; } else if ( "upgrade-nowait".equals( lockMode ) ) { return LockMode.UPGRADE_NOWAIT; } else if ( "write".equals( lockMode ) ) { return LockMode.WRITE; } else if ( "force".equals( lockMode ) ) { return LockMode.FORCE; } else { throw new MappingException( "unknown lockmode" ); } }
Example 3
Source File: Dialect.java From cacheonix-core with GNU Lesser General Public License v2.1 | 5 votes |
/** * Given a lock mode, determine the appropriate for update fragment to use. * * @param lockMode The lock mode to apply. * @return The appropriate for update fragment. */ public String getForUpdateString(LockMode lockMode) { if ( lockMode==LockMode.UPGRADE ) { return getForUpdateString(); } else if ( lockMode==LockMode.UPGRADE_NOWAIT ) { return getForUpdateNowaitString(); } else if ( lockMode==LockMode.FORCE ) { return getForUpdateNowaitString(); } else { return ""; } }
Example 4
Source File: AbstractLockUpgradeEventListener.java From lams with GNU General Public License v2.0 | 4 votes |
/** * Performs a pessimistic lock upgrade on a given entity, if needed. * * @param object The entity for which to upgrade the lock. * @param entry The entity's EntityEntry instance. * @param lockOptions contains the requested lock mode. * @param source The session which is the source of the event being processed. */ protected void upgradeLock(Object object, EntityEntry entry, LockOptions lockOptions, EventSource source) { LockMode requestedLockMode = lockOptions.getLockMode(); if ( requestedLockMode.greaterThan( entry.getLockMode() ) ) { // The user requested a "greater" (i.e. more restrictive) form of // pessimistic lock if ( entry.getStatus() != Status.MANAGED ) { throw new ObjectDeletedException( "attempted to lock a deleted instance", entry.getId(), entry.getPersister().getEntityName() ); } final EntityPersister persister = entry.getPersister(); if ( log.isTraceEnabled() ) { log.tracev( "Locking {0} in mode: {1}", MessageHelper.infoString( persister, entry.getId(), source.getFactory() ), requestedLockMode ); } final boolean cachingEnabled = persister.canWriteToCache(); SoftLock lock = null; Object ck = null; try { if ( cachingEnabled ) { EntityDataAccess cache = persister.getCacheAccessStrategy(); ck = cache.generateCacheKey( entry.getId(), persister, source.getFactory(), source.getTenantIdentifier() ); lock = cache.lockItem( source, ck, entry.getVersion() ); } if ( persister.isVersioned() && requestedLockMode == LockMode.FORCE ) { // todo : should we check the current isolation mode explicitly? Object nextVersion = persister.forceVersionIncrement( entry.getId(), entry.getVersion(), source ); entry.forceLocked( object, nextVersion ); } else { persister.lock( entry.getId(), entry.getVersion(), object, lockOptions, source ); } entry.setLockMode(requestedLockMode); } finally { // the database now holds a lock + the object is flushed from the cache, // so release the soft lock if ( cachingEnabled ) { persister.getCacheAccessStrategy().unlockItem( source, ck, lock ); } } } }
Example 5
Source File: AbstractLockUpgradeEventListener.java From cacheonix-core with GNU Lesser General Public License v2.1 | 4 votes |
/** * Performs a pessimistic lock upgrade on a given entity, if needed. * * @param object The entity for which to upgrade the lock. * @param entry The entity's EntityEntry instance. * @param requestedLockMode The lock mode being requested for locking. * @param source The session which is the source of the event being processed. * @throws HibernateException */ protected void upgradeLock(Object object, EntityEntry entry, LockMode requestedLockMode, SessionImplementor source) throws HibernateException { if ( requestedLockMode.greaterThan( entry.getLockMode() ) ) { // The user requested a "greater" (i.e. more restrictive) form of // pessimistic lock if ( entry.getStatus() != Status.MANAGED ) { throw new ObjectDeletedException( "attempted to lock a deleted instance", entry.getId(), entry.getPersister().getEntityName() ); } final EntityPersister persister = entry.getPersister(); if ( log.isTraceEnabled() ) log.trace( "locking " + MessageHelper.infoString( persister, entry.getId(), source.getFactory() ) + " in mode: " + requestedLockMode ); final CacheConcurrencyStrategy.SoftLock lock; final CacheKey ck; if ( persister.hasCache() ) { ck = new CacheKey( entry.getId(), persister.getIdentifierType(), persister.getRootEntityName(), source.getEntityMode(), source.getFactory() ); lock = persister.getCache().lock( ck, entry.getVersion() ); } else { ck = null; lock = null; } try { if ( persister.isVersioned() && requestedLockMode == LockMode.FORCE ) { // todo : should we check the current isolation mode explicitly? Object nextVersion = persister.forceVersionIncrement( entry.getId(), entry.getVersion(), source ); entry.forceLocked( object, nextVersion ); } else { persister.lock( entry.getId(), entry.getVersion(), object, requestedLockMode, source ); } entry.setLockMode(requestedLockMode); } finally { // the database now holds a lock + the object is flushed from the cache, // so release the soft lock if ( persister.hasCache() ) { persister.getCache().release(ck, lock ); } } } }