Package org.hibernate.cache.spi.access
Interface CollectionDataAccess
- All Superinterfaces:
CachedDomainDataAccess
- All Known Implementing Classes:
AbstractCollectionDataAccess
,CollectionNonStrictReadWriteAccess
,CollectionReadOnlyAccess
,CollectionReadWriteAccess
,CollectionTransactionAccess
Contract for managing transactional and concurrent access to cached collection
data. For cached collection data, all modification actions actually just
invalidate the entry(s). The call sequence here is:
CachedDomainDataAccess.lockItem(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object, java.lang.Object)
then CachedDomainDataAccess.remove(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object)
then CachedDomainDataAccess.unlockItem(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object, org.hibernate.cache.spi.access.SoftLock)
There is another usage pattern that is used to invalidate entries
afterQuery performing "bulk" HQL/SQL operations:
CachedDomainDataAccess.lockRegion()
then CachedDomainDataAccess.removeAll(org.hibernate.engine.spi.SharedSessionContractImplementor)
then CachedDomainDataAccess.unlockRegion(org.hibernate.cache.spi.access.SoftLock)
-
Method Summary
Modifier and TypeMethodDescriptiongenerateCacheKey
(Object id, CollectionPersister collectionDescriptor, SessionFactoryImplementor factory, String tenantIdentifier) To create instances of CollectionCacheKey for this region, Hibernate will invoke this method exclusively so that generated implementations can generate optimised keys.getCacheKeyId
(Object cacheKey) Methods inherited from interface org.hibernate.cache.spi.access.CachedDomainDataAccess
contains, evict, evictAll, get, getAccessType, getRegion, lockItem, lockRegion, putFromLoad, putFromLoad, remove, removeAll, unlockItem, unlockRegion
-
Method Details
-
generateCacheKey
Object generateCacheKey(Object id, CollectionPersister collectionDescriptor, SessionFactoryImplementor factory, String tenantIdentifier) To create instances of CollectionCacheKey for this region, Hibernate will invoke this method exclusively so that generated implementations can generate optimised keys.- Parameters:
id
- the primary identifier of the CollectioncollectionDescriptor
- the descriptor of the collection 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 collection on this same region
-
getCacheKeyId
Performs reverse operation togenerateCacheKey(java.lang.Object, org.hibernate.persister.collection.CollectionPersister, org.hibernate.engine.spi.SessionFactoryImplementor, java.lang.String)
- Parameters:
cacheKey
- key previously returned fromgenerateCacheKey(java.lang.Object, org.hibernate.persister.collection.CollectionPersister, org.hibernate.engine.spi.SessionFactoryImplementor, java.lang.String)
- Returns:
- original key passed to
generateCacheKey(java.lang.Object, org.hibernate.persister.collection.CollectionPersister, org.hibernate.engine.spi.SessionFactoryImplementor, java.lang.String)
-