org.hibernate.engine

Class CascadingAction


public abstract class CascadingAction
extends java.lang.Object

A session action that may be cascaded from parent entity to its children
Author:
Gavin King

Field Summary

static CascadingAction
DELETE
static CascadingAction
EVICT
static CascadingAction
LOCK
static CascadingAction
MERGE
static CascadingAction
PERSIST
static CascadingAction
PERSIST_ON_FLUSH
Execute persist during flush time
static CascadingAction
REFRESH
static CascadingAction
REPLICATE
static CascadingAction
SAVE_UPDATE
static CascadingAction
SAVE_UPDATE_COPY

Method Summary

abstract void
cascade(EventSource session, Object child, String entityName, Object anything, boolean isCascadeDeleteEnabled)
Cascade the action to the child object.
abstract boolean
deleteOrphans()
Does this action potentially extrapolate to orphan deletes?
abstract Iterator
getCascadableChildrenIterator(EventSource session, CollectionType collectionType, Object collection)
Given a collection, get an iterator of the children upon which the current cascading action should be visited.
static Iterator
getLoadedElementsIterator(SessionImplementor session, CollectionType collectionType, Object collection)
Iterate just the elements of the collection that are already there.
void
noCascade(EventSource session, Object child, Object parent, EntityPersister persister, int propertyIndex)
Called (in the case of requiresNoCascadeChecking() returning true) to validate that no cascade on the given property is considered a valid semantic.
boolean
performOnLazyProperty()
Should this action be performed (or noCascade consulted) in the case of lazy properties.
boolean
requiresNoCascadeChecking()
Does the specified cascading action require verification of no cascade validity?

Field Details

DELETE

public static final CascadingAction DELETE

EVICT

public static final CascadingAction EVICT

LOCK

public static final CascadingAction LOCK

MERGE

public static final CascadingAction MERGE

PERSIST

public static final CascadingAction PERSIST

PERSIST_ON_FLUSH

public static final CascadingAction PERSIST_ON_FLUSH
Execute persist during flush time

REFRESH

public static final CascadingAction REFRESH

REPLICATE

public static final CascadingAction REPLICATE

SAVE_UPDATE

public static final CascadingAction SAVE_UPDATE

SAVE_UPDATE_COPY

public static final CascadingAction SAVE_UPDATE_COPY

Method Details

cascade

public abstract void cascade(EventSource session,
                             Object child,
                             String entityName,
                             Object anything,
                             boolean isCascadeDeleteEnabled)
            throws HibernateException
Cascade the action to the child object.
Parameters:
session - The session within which the cascade is occuring.
child - The child to which cascading should be performed.
entityName - The child's entity name
anything - Anything ;) Typically some form of cascade-local cache which is specific to each CascadingAction type
isCascadeDeleteEnabled - Are cascading deletes enabled.

deleteOrphans

public abstract boolean deleteOrphans()
Does this action potentially extrapolate to orphan deletes?
Returns:
True if this action can lead to deletions of orphans.

getCascadableChildrenIterator

public abstract Iterator getCascadableChildrenIterator(EventSource session,
                                                       CollectionType collectionType,
                                                       Object collection)
Given a collection, get an iterator of the children upon which the current cascading action should be visited.
Parameters:
session - The session within which the cascade is occuring.
collectionType - The mapping type of the collection.
collection - The collection instance.
Returns:
The children iterator.

getLoadedElementsIterator

public static Iterator getLoadedElementsIterator(SessionImplementor session,
                                                 CollectionType collectionType,
                                                 Object collection)
Iterate just the elements of the collection that are already there. Don't load any new elements from the database.

noCascade

public void noCascade(EventSource session,
                      Object child,
                      Object parent,
                      EntityPersister persister,
                      int propertyIndex)
Called (in the case of requiresNoCascadeChecking() returning true) to validate that no cascade on the given property is considered a valid semantic.
Parameters:
session - The session witin which the cascade is occurring.
child - The property value
parent - The property value owner
persister - The entity persister for the owner
propertyIndex - The index of the property within the owner.

performOnLazyProperty

public boolean performOnLazyProperty()
Should this action be performed (or noCascade consulted) in the case of lazy properties.

requiresNoCascadeChecking

public boolean requiresNoCascadeChecking()
Does the specified cascading action require verification of no cascade validity?
Returns:
True if this action requires no-cascade verification; false otherwise.