Package org.hibernate.cache.spi.support
Class EntityReadWriteAccess
- java.lang.Object
-
- org.hibernate.cache.spi.support.AbstractCachedDomainDataAccess
-
- org.hibernate.cache.spi.support.AbstractReadWriteAccess
-
- org.hibernate.cache.spi.support.EntityReadWriteAccess
-
- All Implemented Interfaces:
CachedDomainDataAccess,EntityDataAccess,AbstractDomainDataRegion.Destructible
public class EntityReadWriteAccess extends AbstractReadWriteAccess implements EntityDataAccess
Standard support forEntityDataAccessusing theAccessType.READ_WRITEaccess type.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.hibernate.cache.spi.support.AbstractReadWriteAccess
AbstractReadWriteAccess.Item, AbstractReadWriteAccess.Lockable, AbstractReadWriteAccess.SoftLockImpl
-
-
Constructor Summary
Constructors Constructor Description EntityReadWriteAccess(DomainDataRegion domainDataRegion, CacheKeysFactory keysFactory, DomainDataStorageAccess storageAccess, EntityDataCachingConfig entityAccessConfig)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanafterInsert(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object version)Called afterQuery an item has been inserted (afterQuery the transaction completes), instead of calling release().booleanafterUpdate(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object currentVersion, java.lang.Object previousVersion, SoftLock lock)Called afterQuery an item has been updated (afterQuery the transaction completes), instead of calling release().java.lang.ObjectgenerateCacheKey(java.lang.Object id, EntityPersister rootEntityDescriptor, SessionFactoryImplementor factory, java.lang.String tenantIdentifier)To create instances of keys for this region, Hibernate will invoke this method exclusively so that generated implementations can generate optimised keys.protected AccessedDataClassificationgetAccessedDataClassification()AccessTypegetAccessType()The type of access implementedjava.lang.ObjectgetCacheKeyId(java.lang.Object cacheKey)protected java.util.ComparatorgetVersionComparator()booleaninsert(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object version)Called afterQuery an item has been inserted (beforeQuery the transaction completes), instead of calling evict().SoftLocklockRegion()Lock the entire regionbooleanupdate(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object currentVersion, java.lang.Object previousVersion)Called afterQuery an item has been updated (beforeQuery the transaction completes), instead of calling evict().-
Methods inherited from class org.hibernate.cache.spi.support.AbstractReadWriteAccess
decrementLock, get, handleLockExpiry, lockItem, nextLockId, putFromLoad, putFromLoad, readLock, remove, removeAll, unlockItem, uuid, writeLock
-
Methods inherited from class org.hibernate.cache.spi.support.AbstractCachedDomainDataAccess
clearCache, contains, destroy, evict, evictAll, getRegion, getStorageAccess, unlockRegion
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.cache.spi.access.CachedDomainDataAccess
contains, evict, evictAll, get, getRegion, lockItem, putFromLoad, putFromLoad, remove, removeAll, unlockItem, unlockRegion
-
-
-
-
Constructor Detail
-
EntityReadWriteAccess
public EntityReadWriteAccess(DomainDataRegion domainDataRegion, CacheKeysFactory keysFactory, DomainDataStorageAccess storageAccess, EntityDataCachingConfig entityAccessConfig)
-
-
Method Detail
-
getAccessType
public AccessType getAccessType()
Description copied from interface:CachedDomainDataAccessThe type of access implemented- Specified by:
getAccessTypein interfaceCachedDomainDataAccess
-
getAccessedDataClassification
protected AccessedDataClassification getAccessedDataClassification()
- Specified by:
getAccessedDataClassificationin classAbstractReadWriteAccess
-
getVersionComparator
protected java.util.Comparator getVersionComparator()
- Specified by:
getVersionComparatorin classAbstractReadWriteAccess
-
generateCacheKey
public java.lang.Object generateCacheKey(java.lang.Object id, EntityPersister rootEntityDescriptor, SessionFactoryImplementor factory, java.lang.String tenantIdentifier)Description copied from interface:EntityDataAccessTo create instances of keys for this region, Hibernate will invoke this method exclusively so that generated implementations can generate optimised keys.- Specified by:
generateCacheKeyin interfaceEntityDataAccess- Parameters:
id- the primary identifier of the entityrootEntityDescriptor- Hierarchy for which a key is being generatedfactory- a reference to the current SessionFactorytenantIdentifier- the tenant id, or null if multi-tenancy is not being used.- Returns:
- a key which can be used to identify this entity on this same region todo (6.0) : the access for an entity knows the entity hierarchy and the factory. why pass them in?
-
getCacheKeyId
public java.lang.Object getCacheKeyId(java.lang.Object cacheKey)
Description copied from interface:EntityDataAccessPerforms reverse operation toEntityDataAccess.generateCacheKey(java.lang.Object, org.hibernate.persister.entity.EntityPersister, org.hibernate.engine.spi.SessionFactoryImplementor, java.lang.String)- Specified by:
getCacheKeyIdin interfaceEntityDataAccess- Parameters:
cacheKey- key previously returned fromEntityDataAccess.generateCacheKey(java.lang.Object, org.hibernate.persister.entity.EntityPersister, org.hibernate.engine.spi.SessionFactoryImplementor, java.lang.String)- Returns:
- original id passed to
EntityDataAccess.generateCacheKey(java.lang.Object, org.hibernate.persister.entity.EntityPersister, org.hibernate.engine.spi.SessionFactoryImplementor, java.lang.String)
-
insert
public boolean insert(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object version)
Description copied from interface:EntityDataAccessCalled afterQuery an item has been inserted (beforeQuery the transaction completes), instead of calling evict(). This method is used by "synchronous" concurrency strategies.- Specified by:
insertin interfaceEntityDataAccess- Parameters:
session- Current sessionkey- The item keyvalue- The itemversion- The item's version value- Returns:
- Were the contents of the cache actually changed by this operation?
-
afterInsert
public boolean afterInsert(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object version)
Description copied from interface:EntityDataAccessCalled afterQuery an item has been inserted (afterQuery the transaction completes), instead of calling release(). This method is used by "asynchronous" concurrency strategies.- Specified by:
afterInsertin interfaceEntityDataAccess- Parameters:
session- Current sessionkey- The item keyvalue- The itemversion- The item's version value- Returns:
- Were the contents of the cache actual changed by this operation?
-
update
public boolean update(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object currentVersion, java.lang.Object previousVersion)
Description copied from interface:EntityDataAccessCalled afterQuery an item has been updated (beforeQuery the transaction completes), instead of calling evict(). This method is used by "synchronous" concurrency strategies.- Specified by:
updatein interfaceEntityDataAccess- Parameters:
session- Current sessionkey- The item keyvalue- The itemcurrentVersion- The item's current version valuepreviousVersion- The item's previous version value- Returns:
- Were the contents of the cache actually changed by this operation?
-
afterUpdate
public boolean afterUpdate(SharedSessionContractImplementor session, java.lang.Object key, java.lang.Object value, java.lang.Object currentVersion, java.lang.Object previousVersion, SoftLock lock)
Description copied from interface:EntityDataAccessCalled afterQuery an item has been updated (afterQuery the transaction completes), instead of calling release(). This method is used by "asynchronous" concurrency strategies.- Specified by:
afterUpdatein interfaceEntityDataAccess- Parameters:
session- Current sessionkey- The item keyvalue- The itemcurrentVersion- The item's current version valuepreviousVersion- The item's previous version valuelock- The lock previously obtained fromCachedDomainDataAccess.lockItem(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object, java.lang.Object)- Returns:
- Were the contents of the cache actually changed by this operation?
-
lockRegion
public SoftLock lockRegion()
Description copied from interface:CachedDomainDataAccessLock the entire region- Specified by:
lockRegionin interfaceCachedDomainDataAccess- Overrides:
lockRegionin classAbstractCachedDomainDataAccess- Returns:
- A representation of our lock on the item; or
null.
-
-