Package org.hibernate.engine.spi
Interface NaturalIdResolutions
- All Known Implementing Classes:
NaturalIdResolutionsImpl
public interface NaturalIdResolutions
Manages the cached resolutions related to natural-id (to and from identifier)
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ObjectMarker reference used to indicate that a given natural-id is invalid -
Method Summary
Modifier and TypeMethodDescriptionbooleancacheResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) Caches a natural-id-to-identifier resolution.voidcacheResolutionFromLoad(Object id, Object naturalId, EntityMappingType entityDescriptor) voidfindCachedIdByNaturalId(Object naturalId, EntityMappingType entityDescriptor) Find the cached identifier for the given natural-idfindCachedNaturalIdById(Object id, EntityMappingType entityDescriptor) Find the cached natural-id for the given identifierCollection<?> getCachedPkResolutions(EntityMappingType entityDescriptor) Find all the locally cached primary key cross-reference entries for the given entity.voidhandleEviction(Object id, Object object, EntityMappingType entityDescriptor) Called onSession.evict(java.lang.Object)to give a chance to clean up natural-id cross refs.voidhandleSynchronization(Object id, Object entity, EntityMappingType entityDescriptor) Part of the "load synchronization process".voidmanageLocalResolution(Object id, Object naturalIdValue, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source) Ensures that the necessary local cross-reference exists.voidmanageSharedResolution(Object id, Object naturalId, Object previousNaturalId, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source) Ensures that the necessary cross-reference exists in the L2 cacheremoveLocalResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) Removes any local cross-reference, returning the previously cached value if one.removeResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) Removes a natural-id-to-identifier resolution.default voidremoveSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) voidremoveSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor, boolean delayToAfterTransactionCompletion) Removes any cross-reference from the L2 cache
-
Field Details
-
INVALID_NATURAL_ID_REFERENCE
Marker reference used to indicate that a given natural-id is invalid
-
-
Method Details
-
cacheResolution
Caches a natural-id-to-identifier resolution. Handles both the local (transactional) and shared (second-level) caches.- Returns:
trueif a new entry was actually added;falseotherwise.
-
removeResolution
Removes a natural-id-to-identifier resolution.Handles both the local (transactional) and shared (second-level) caches.
- Returns:
- The cached values, if any. May be different from incoming values.
-
cacheResolutionFromLoad
-
manageLocalResolution
void manageLocalResolution(Object id, Object naturalIdValue, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source) Ensures that the necessary local cross-reference exists. Specifically, this only effects the persistence-context cache, not the L2 cache -
removeLocalResolution
Removes any local cross-reference, returning the previously cached value if one.Again, this only effects the persistence-context cache, not the L2 cache
-
findCachedNaturalIdById
Find the cached natural-id for the given identifier- Returns:
- The cross-referenced natural-id values or
null
-
findCachedIdByNaturalId
Find the cached identifier for the given natural-id- Returns:
- The cross-referenced primary key,
INVALID_NATURAL_ID_REFERENCEornull.
-
getCachedPkResolutions
Find all the locally cached primary key cross-reference entries for the given entity.- Returns:
- The primary keys
-
handleSynchronization
Part of the "load synchronization process".Responsible for maintaining cross-reference entries when natural-id values were found to have changed.
Also responsible for tracking the old values as no longer valid until the next flush because otherwise going to the database would just re-pull the old values as valid. In this responsibility,
cleanupFromSynchronizations()is the inverse process called after flush to clean up those entries.- See Also:
-
cleanupFromSynchronizations
void cleanupFromSynchronizations()The clean up process ofhandleSynchronization(java.lang.Object, java.lang.Object, org.hibernate.metamodel.mapping.EntityMappingType). Responsible for cleaning up the tracking of old values as no longer valid. -
handleEviction
Called onSession.evict(java.lang.Object)to give a chance to clean up natural-id cross refs.
-