Package org.hibernate.cache.access
Defines contracts for transactional and concurrent access to cached
entity and
collection data. Transactions pass in a
timestamp indicating transaction start time which is then used to protect against concurrent access (exactly how
that occurs is based on the actual access-strategy impl used). Two different implementation patterns are provided
for.
- A transaction-aware cache implementation might be wrapped by a synchronous access strategy, where updates to the cache are written to the cache inside the transaction.
- A non-transaction-aware cache would be wrapped by an asynchronous access strategy, where items are merely "soft locked" during the transaction and then updated during the "after transaction completion" phase; the soft lock is not an actual lock on the database row - only upon the cached representation of the item.
invalid reference
read-only
invalid reference
read-write
invalid reference
nonstrict-read-write
invalid reference
transactional
Note that, for an asynchronous cache, cache invalidation must be a two step process (lock->unlock or
lock->afterUpdate), since this is the only way to guarantee consistency with the database for a nontransactional
cache implementation. For a synchronous cache, cache invalidation is a single step process (evict or update).
Hence, these contracts (
invalid reference
org.hibernate.cache.access.EntityRegionAcessStrategyCollectionRegionAccessStrategy) define a three step process to cater for both
models (see the individual contracts for details).
Note that query result caching does not go through an access strategy; those caches are managed directly against
the underlying QueryResultsRegion.
-
ClassDescriptionThe types of access strategies available.Contract for managing transactional and concurrent access to cached collection data.Contract for managing transactional and concurrent access to cached entity data.Moved up from inner definition on the now deprecated
CacheConcurrencyStrategy.