public interface CachedDomainDataAccess
Base contract for accessing the underlying cached data for a particular Navigable of the user’s domain model in a transactionally ACID manner.
Modifier and Type | Method and Description |
---|---|
boolean |
contains(Object key)
Determine whether this region contains data for the given key.
|
void |
evict(Object key)
Forcibly evict an item from the cache immediately without regard for transaction
isolation and/or locking.
|
void |
evictAll()
Forcibly evict all items from the cache immediately without regard for transaction
isolation.
|
Object |
get(SharedSessionContractImplementor session,
Object key)
Attempt to retrieve an object from the cache.
|
AccessType |
getAccessType()
The type of access implemented
|
DomainDataRegion |
getRegion()
The region containing the data being accessed
|
SoftLock |
lockItem(SharedSessionContractImplementor session,
Object key,
Object version)
We are going to attempt to update/delete the keyed object.
|
SoftLock |
lockRegion()
Lock the entire region
|
boolean |
putFromLoad(SharedSessionContractImplementor session,
Object key,
Object value,
Object version)
Attempt to cache an object, afterQuery loading from the database.
|
boolean |
putFromLoad(SharedSessionContractImplementor session,
Object key,
Object value,
Object version,
boolean minimalPutOverride)
Attempt to cache an object, afterQuery loading from the database, explicitly
specifying the minimalPut behavior.
|
void |
remove(SharedSessionContractImplementor session,
Object key)
Called afterQuery an item has become stale (beforeQuery the transaction completes).
|
void |
removeAll(SharedSessionContractImplementor session)
Remove all data for this accessed type
|
void |
unlockItem(SharedSessionContractImplementor session,
Object key,
SoftLock lock)
Called when we have finished the attempted update/delete (which may or
may not have been successful), after transaction completion.
|
void |
unlockRegion(SoftLock lock)
Called after we have finished the attempted invalidation of the entire
region
|
DomainDataRegion getRegion()
The region containing the data being accessed
AccessType getAccessType()
The type of access implemented
Object get(SharedSessionContractImplementor session, Object key)
Attempt to retrieve an object from the cache. Mainly used in attempting to resolve entities/collections from the second level cache.
session
- Current session.key
- The key of the item to be retrieved.null
CacheException
- Propagated from underlying cache providerboolean putFromLoad(SharedSessionContractImplementor session, Object key, Object value, Object version)
Attempt to cache an object, afterQuery loading from the database.
session
- Current session.key
- The item keyvalue
- The itemversion
- the item version numbertrue
if the object was successfully cachedCacheException
- Propagated from underlying cache providerboolean putFromLoad(SharedSessionContractImplementor session, Object key, Object value, Object version, boolean minimalPutOverride)
Attempt to cache an object, afterQuery loading from the database, explicitly specifying the minimalPut behavior.
session
- Current session.key
- The item keyvalue
- The itemversion
- the item version numberminimalPutOverride
- Explicit minimalPut flagtrue
if the object was successfully cachedCacheException
- Propagated from underlying cache providerSoftLock lockItem(SharedSessionContractImplementor session, Object key, Object version)
We are going to attempt to update/delete the keyed object. This
method is used by "asynchronous" concurrency strategies.
<p/>
The returned object must be passed back to unlockItem(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object, org.hibernate.cache.spi.access.SoftLock)
, to release the
lock. Concurrency strategies which do not support client-visible
locks may silently return null.
session
- Current session.key
- The key of the item to lockversion
- The item’s current version valuenull
.CacheException
- Propagated from underlying cache providervoid unlockItem(SharedSessionContractImplementor session, Object key, SoftLock lock)
Called when we have finished the attempted update/delete (which may or may not have been successful), after transaction completion. This method is used by "asynchronous" concurrency strategies.
session
- Current session.key
- The item keylock
- The lock previously obtained from lockItem(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object, java.lang.Object)
CacheException
- Propagated from underlying cache providervoid remove(SharedSessionContractImplementor session, Object key)
Called afterQuery an item has become stale (beforeQuery the transaction completes). This method is used by "synchronous" concurrency strategies.
session
- Current session.key
- The key of the item to removeCacheException
- Propagated from underlying cache providervoid removeAll(SharedSessionContractImplementor session)
Remove all data for this accessed type
session
- CacheException
- Propagated from underlying cache providerboolean contains(Object key)
Determine whether this region contains data for the given key. <p/> The semantic here is whether the cache contains data visible for the current call context. This should be viewed as a "best effort", meaning blocking should be avoid if possible.
key
- The cache keySoftLock lockRegion()
Lock the entire region
null
.CacheException
- Propagated from underlying cache providervoid unlockRegion(SoftLock lock)
Called after we have finished the attempted invalidation of the entire region
lock
- The lock previously obtained from lockRegion()
CacheException
- Propagated from underlying cache providervoid evict(Object key)
Forcibly evict an item from the cache immediately without regard for transaction
isolation and/or locking. This behavior is exactly Hibernate legacy behavior, but
it is also required by JPA - so we cannot remove it.
<p/>
Used from JPA’s Cache.evict(Class, Object)
, as well as the
Hibernate extension Cache.evictEntityData(Class, Serializable)
and Cache.evictEntityData(String, Serializable)
key
- The key of the item to removeCacheException
- Propagated from underlying cache providervoid evictAll()
Forcibly evict all items from the cache immediately without regard for transaction
isolation. This behavior is exactly Hibernate legacy behavior, but it is also required
by JPA - so we cannot remove it.
<p/>
Used from our JPA impl of Cache.evictAll()
as well as the Hibernate
extensions Cache.evictEntityData(Class)
,
Cache.evictEntityData(String)
and
Cache.evictEntityData()
CacheException
- Propagated from underlying cache providerCopyright © 2001-2018 Red Hat, Inc. All Rights Reserved.