Interface NaturalIdResolutions

All Known Implementing Classes:
NaturalIdResolutionsImpl

public interface NaturalIdResolutions
Manages the cached resolutions related to natural-id (to and from identifier)
  • Field Details

    • INVALID_NATURAL_ID_REFERENCE

      static final Object INVALID_NATURAL_ID_REFERENCE
      Marker reference used to indicate that a given natural-id is invalid
  • Method Details

    • cacheResolution

      boolean cacheResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)
      Caches a natural-id-to-identifier resolution. Handles both the local (transactional) and shared (second-level) caches.
      Returns:
      true if a new entry was actually added; false otherwise.
    • removeResolution

      Object removeResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)
      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

      void cacheResolutionFromLoad(Object id, Object naturalId, EntityMappingType entityDescriptor)
    • 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

      Object removeLocalResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)
      Removes any local cross-reference, returning the previously cached value if one.

      Again, this only effects the persistence-context cache, not the L2 cache

    • manageSharedResolution

      void manageSharedResolution(Object id, Object naturalId, Object previousNaturalId, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source)
      Ensures that the necessary cross-reference exists in the L2 cache
    • removeSharedResolution

      void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor, boolean delayToAfterTransactionCompletion)
      Removes any cross-reference from the L2 cache
    • removeSharedResolution

      default void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)
    • findCachedNaturalIdById

      Object findCachedNaturalIdById(Object id, EntityMappingType entityDescriptor)
      Find the cached natural-id for the given identifier
      Returns:
      The cross-referenced natural-id values or null
    • findCachedIdByNaturalId

      Object findCachedIdByNaturalId(Object naturalId, EntityMappingType entityDescriptor)
      Find the cached identifier for the given natural-id
      Returns:
      The cross-referenced primary key, INVALID_NATURAL_ID_REFERENCE or null.
    • getCachedPkResolutions

      Collection<?> getCachedPkResolutions(EntityMappingType entityDescriptor)
      Find all the locally cached primary key cross-reference entries for the given entity.
      Returns:
      The primary keys
    • handleSynchronization

      void handleSynchronization(Object id, Object entity, EntityMappingType entityDescriptor)
      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 of handleSynchronization(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

      void handleEviction(Object id, Object object, EntityMappingType entityDescriptor)
      Called on Session.evict(java.lang.Object) to give a chance to clean up natural-id cross refs.