org.hibernate.event.def

Class AbstractSaveEventListener

Implemented Interfaces:
Serializable
Known Direct Subclasses:
DefaultMergeEventListener, DefaultPersistEventListener, DefaultReplicateEventListener, DefaultSaveOrUpdateEventListener

public abstract class AbstractSaveEventListener
extends AbstractReassociateEventListener

A convenience bas class for listeners responding to save events.
Author:
Steve Ebersole.

Field Summary

protected static int
DELETED
protected static int
DETACHED
protected static int
PERSISTENT
protected static int
TRANSIENT

Method Summary

protected void
cascadeAfterSave(EventSource source, EntityPersister persister, Object entity, Object anything)
Handles to calls needed to perform post-save cascades.
protected void
cascadeBeforeSave(EventSource source, EntityPersister persister, Object entity, Object anything)
Handles the calls needed to perform pre-save cascades for the given entity.
protected Boolean
getAssumedUnsaved()
protected abstract CascadingAction
getCascadeAction()
protected int
getEntityState(Object entity, String entityName, EntityEntry entry, SessionImplementor source)
Determine whether the entity is persistent, detached, or transient
protected String
getLoggableName(String entityName, Object entity)
protected Map
getMergeMap(Object anything)
protected boolean
invokeSaveLifecycle(Object entity, EntityPersister persister, EventSource source)
protected boolean
isVersionIncrementDisabled()
After the save, will te version number be incremented if the instance is modified?
protected Serializable
performSave(Object entity, Serializable id, EntityPersister persister, boolean useIdentityColumn, Object anything, EventSource source, boolean requiresImmediateIdAccess)
Ppepares the save call by checking the session caches for a pre-existing entity and performing any lifecycle callbacks.
protected Serializable
performSaveOrReplicate(Object entity, EntityKey key, EntityPersister persister, boolean useIdentityColumn, Object anything, EventSource source, boolean requiresImmediateIdAccess)
Performs all the actual work needed to save an entity (well to get the save moved to the execution queue).
protected Serializable
saveWithGeneratedId(Object entity, String entityName, Object anything, EventSource source, boolean requiresImmediateIdAccess)
Prepares the save call using a newly generated id.
protected Serializable
saveWithRequestedId(Object entity, Serializable requestedId, String entityName, Object anything, EventSource source)
Prepares the save call using the given requested id.
protected boolean
substituteValuesIfNecessary(Object entity, Serializable id, Object[] values, EntityPersister persister, SessionImplementor source)
Perform any property value substitution that is necessary (interceptor callback, version initialization...)
protected void
validate(Object entity, EntityPersister persister, EventSource source)
protected boolean
visitCollectionsBeforeSave(Object entity, Serializable id, Object[] values, Type[] types, EventSource source)

Methods inherited from class org.hibernate.event.def.AbstractReassociateEventListener

reassociate

Field Details

DELETED

protected static final int DELETED
Field Value:
3

DETACHED

protected static final int DETACHED
Field Value:
2

PERSISTENT

protected static final int PERSISTENT
Field Value:
0

TRANSIENT

protected static final int TRANSIENT
Field Value:
1

Method Details

cascadeAfterSave

protected void cascadeAfterSave(EventSource source,
                                EntityPersister persister,
                                Object entity,
                                Object anything)
Handles to calls needed to perform post-save cascades.
Parameters:
source - The session from which the event originated.
persister - The entity's persister instance.
entity - The entity beng saved.
anything - Generally cascade-specific data

cascadeBeforeSave

protected void cascadeBeforeSave(EventSource source,
                                 EntityPersister persister,
                                 Object entity,
                                 Object anything)
Handles the calls needed to perform pre-save cascades for the given entity.
Parameters:
source - The session from whcih the save event originated.
persister - The entity's persister instance.
entity - The entity to be saved.
anything - Generally cascade-specific data

getAssumedUnsaved

protected Boolean getAssumedUnsaved()

getCascadeAction

protected abstract CascadingAction getCascadeAction()

getEntityState

protected int getEntityState(Object entity,
                             String entityName,
                             EntityEntry entry,
                             SessionImplementor source)
Determine whether the entity is persistent, detached, or transient
Parameters:
entity - The entity to check
entityName - The name of the entity
entry - The entity's entry in the persistence context
source - The originating session.
Returns:
The state.

getLoggableName

protected String getLoggableName(String entityName,
                                 Object entity)

getMergeMap

protected Map getMergeMap(Object anything)

invokeSaveLifecycle

protected boolean invokeSaveLifecycle(Object entity,
                                      EntityPersister persister,
                                      EventSource source)

isVersionIncrementDisabled

protected boolean isVersionIncrementDisabled()
After the save, will te version number be incremented if the instance is modified?
Returns:
True if the version will be incremented on an entity change after save; false otherwise.

performSave

protected Serializable performSave(Object entity,
                                   Serializable id,
                                   EntityPersister persister,
                                   boolean useIdentityColumn,
                                   Object anything,
                                   EventSource source,
                                   boolean requiresImmediateIdAccess)
Ppepares the save call by checking the session caches for a pre-existing entity and performing any lifecycle callbacks.
Parameters:
entity - The entity to be saved.
id - The id by which to save the entity.
persister - The entity's persister instance.
useIdentityColumn - Is an identity column being used?
anything - Generally cascade-specific information.
source - The session from which the event originated.
requiresImmediateIdAccess - does the event context require access to the identifier immediately after execution of this method (if not, post-insert style id generators may be postponed if we are outside a transaction).
Returns:
The id used to save the entity; may be null depending on the type of id generator used and the requiresImmediateIdAccess value

performSaveOrReplicate

protected Serializable performSaveOrReplicate(Object entity,
                                              EntityKey key,
                                              EntityPersister persister,
                                              boolean useIdentityColumn,
                                              Object anything,
                                              EventSource source,
                                              boolean requiresImmediateIdAccess)
Performs all the actual work needed to save an entity (well to get the save moved to the execution queue).
Parameters:
entity - The entity to be saved
key - The id to be used for saving the entity (or null, in the case of identity columns)
persister - The entity's persister instance.
useIdentityColumn - Should an identity column be used for id generation?
anything - Generally cascade-specific information.
source - The session which is the source of the current event.
requiresImmediateIdAccess - Is access to the identifier required immediately after the completion of the save? persist(), for example, does not require this...
Returns:
The id used to save the entity; may be null depending on the type of id generator used and the requiresImmediateIdAccess value

saveWithGeneratedId

protected Serializable saveWithGeneratedId(Object entity,
                                           String entityName,
                                           Object anything,
                                           EventSource source,
                                           boolean requiresImmediateIdAccess)
Prepares the save call using a newly generated id.
Parameters:
entity - The entity to be saved
entityName - The entity-name for the entity to be saved
anything - Generally cascade-specific information.
source - The session which is the source of this save event.
requiresImmediateIdAccess - does the event context require access to the identifier immediately after execution of this method (if not, post-insert style id generators may be postponed if we are outside a transaction).
Returns:
The id used to save the entity; may be null depending on the type of id generator used and the requiresImmediateIdAccess value

saveWithRequestedId

protected Serializable saveWithRequestedId(Object entity,
                                           Serializable requestedId,
                                           String entityName,
                                           Object anything,
                                           EventSource source)
Prepares the save call using the given requested id.
Parameters:
entity - The entity to be saved.
requestedId - The id to which to associate the entity.
entityName - The name of the entity being saved.
anything - Generally cascade-specific information.
source - The session which is the source of this save event.
Returns:
The id used to save the entity.

substituteValuesIfNecessary

protected boolean substituteValuesIfNecessary(Object entity,
                                              Serializable id,
                                              Object[] values,
                                              EntityPersister persister,
                                              SessionImplementor source)
Perform any property value substitution that is necessary (interceptor callback, version initialization...)
Parameters:
entity - The entity
id - The entity identifier
values - The snapshot entity state
persister - The entity persister
source - The originating session
Returns:
True if the snapshot state changed such that reinjection of the values into the entity is required.

validate

protected void validate(Object entity,
                        EntityPersister persister,
                        EventSource source)

visitCollectionsBeforeSave

protected boolean visitCollectionsBeforeSave(Object entity,
                                             Serializable id,
                                             Object[] values,
                                             Type[] types,
                                             EventSource source)