Top Description Fields Methods
org.hibernate.engine.spi

public Interface NaturalIdResolutions

Known Direct Implementers
org.hibernate.engine.internal.NaturalIdResolutionsImpl
Imports
java.util.Collection, org.hibernate.metamodel.mapping.EntityMappingType

Manages the cached resolutions related to natural-id (to and from identifier)

Field Summary

Modifier and TypeField and Description
public static final Object
INVALID_NATURAL_ID_REFERENCE

Marker reference used to indicate that a given natural-id is invalid

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

true if a new entry was actually added; false otherwise.
cacheResolution
(Object id, Object naturalId, EntityMappingType entityDescriptor)

Caches a natural-id-to-identifier resolution.

public void
cacheResolutionFromLoad(Object id, Object naturalId, EntityMappingType entityDescriptor)

public void
public Object

Returns:

The cross-referenced primary key, INVALID_NATURAL_ID_REFERENCE or null.
findCachedIdByNaturalId
(Object naturalId, EntityMappingType entityDescriptor)

Find the cached identifier for the given natural-id

public Object

Returns:

The cross-referenced natural-id values or null
findCachedNaturalIdById
(Object id, EntityMappingType entityDescriptor)

Find the cached natural-id for the given identifier

public Collection<?>

Returns:

The primary keys
getCachedPkResolutions
(EntityMappingType entityDescriptor)

Find all the locally cached primary key cross-reference entries for the given entity.

public void
handleEviction(Object id, Object object, EntityMappingType entityDescriptor)

Called on org.hibernate.Session#evict to give a chance to clean up natural-id cross refs.

public void
handleSynchronization(Object id, Object entity, EntityMappingType entityDescriptor)

Part of the "load synchronization process".

public void
manageLocalResolution(Object id, Object naturalIdValue, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source)

Ensures that the necessary local cross-reference exists.

public void
manageSharedResolution(Object id, Object naturalId, Object previousNaturalId, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source)

Ensures that the necessary cross-reference exists in the L2 cache

public Object
removeLocalResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)

Removes any local cross-reference, returning the previously cached value if one.

public Object

Returns:

The cached values, if any. May be different from incoming values.
removeResolution
(Object id, Object naturalId, EntityMappingType entityDescriptor)

Removes a natural-id-to-identifier resolution.

public void
removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)

Removes any cross-reference from the L2 cache

Field Detail

INVALID_NATURAL_ID_REFERENCEback to summary
public static final Object INVALID_NATURAL_ID_REFERENCE

Marker reference used to indicate that a given natural-id is invalid

Method Detail

cacheResolutionback to summary
public 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:boolean

true if a new entry was actually added; false otherwise.

cacheResolutionFromLoadback to summary
public void cacheResolutionFromLoad(Object id, Object naturalId, EntityMappingType entityDescriptor)
cleanupFromSynchronizationsback to summary
public void cleanupFromSynchronizations()

The clean up process of handleSynchronization. Responsible for cleaning up the tracking of old values as no longer valid.

findCachedIdByNaturalIdback to summary
public Object findCachedIdByNaturalId(Object naturalId, EntityMappingType entityDescriptor)

Find the cached identifier for the given natural-id

Returns:Object

The cross-referenced primary key, INVALID_NATURAL_ID_REFERENCE or null.

findCachedNaturalIdByIdback to summary
public Object findCachedNaturalIdById(Object id, EntityMappingType entityDescriptor)

Find the cached natural-id for the given identifier

Returns:Object

The cross-referenced natural-id values or null

getCachedPkResolutionsback to summary
public Collection<?> getCachedPkResolutions(EntityMappingType entityDescriptor)

Find all the locally cached primary key cross-reference entries for the given entity.

Returns:Collection<?>

The primary keys

handleEvictionback to summary
public void handleEviction(Object id, Object object, EntityMappingType entityDescriptor)

Called on org.hibernate.Session#evict to give a chance to clean up natural-id cross refs.

handleSynchronizationback to summary
public 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
manageLocalResolutionback to summary
public 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

manageSharedResolutionback to summary
public void manageSharedResolution(Object id, Object naturalId, Object previousNaturalId, EntityMappingType entityDescriptor, CachedNaturalIdValueSource source)

Ensures that the necessary cross-reference exists in the L2 cache

removeLocalResolutionback to summary
public 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

removeResolutionback to summary
public 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:Object

The cached values, if any. May be different from incoming values.

removeSharedResolutionback to summary
public void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor)

Removes any cross-reference from the L2 cache