org.hibernate.event.def

Class DefaultLoadEventListener

Implemented Interfaces:
LoadEventListener, Serializable

public class DefaultLoadEventListener
extends AbstractLockUpgradeEventListener
implements LoadEventListener

Defines the default load event listeners used by hibernate for loading entities in response to generated load events.
Author:
Steve Ebersole

Field Summary

static LockMode
DEFAULT_LOCK_MODE
static Object
INCONSISTENT_RTN_CLASS_MARKER
static Object
REMOVED_ENTITY_MARKER

Fields inherited from interface org.hibernate.event.LoadEventListener

GET, IMMEDIATE_LOAD, INTERNAL_LOAD_EAGER, INTERNAL_LOAD_LAZY, INTERNAL_LOAD_NULLABLE, LOAD, RELOAD

Method Summary

protected Object
doLoad(LoadEvent event, EntityPersister persister, EntityKey keyToLoad, LoadEventListener.LoadType options)
Coordinates the efforts to load a given entity.
protected Object
load(LoadEvent event, EntityPersister persister, EntityKey keyToLoad, LoadEventListener.LoadType options)
Perfoms the load of an entity.
protected Object
loadFromDatasource(LoadEvent event, EntityPersister persister, EntityKey keyToLoad, LoadEventListener.LoadType options)
Performs the process of loading an entity from the configured underlying datasource.
protected Object
loadFromSecondLevelCache(LoadEvent event, EntityPersister persister, LoadEventListener.LoadType options)
Attempts to load the entity from the second-level cache.
protected Object
loadFromSessionCache(LoadEvent event, EntityKey keyToLoad, LoadEventListener.LoadType options)
Attempts to locate the entity in the session-level cache.
protected Object
lockAndLoad(LoadEvent event, EntityPersister persister, EntityKey keyToLoad, LoadEventListener.LoadType options, SessionImplementor source)
If the class to be loaded has been configured with a cache, then lock given id in that cache and then perform the load.
void
onLoad(LoadEvent event, LoadEventListener.LoadType loadType)
Handle the given load event.
protected Object
proxyOrLoad(LoadEvent event, EntityPersister persister, EntityKey keyToLoad, LoadEventListener.LoadType options)
Based on configured options, will either return a pre-existing proxy, generate a new proxy, or perform an actual load.

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

upgradeLock

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

reassociate

Field Details

DEFAULT_LOCK_MODE

public static final LockMode DEFAULT_LOCK_MODE

INCONSISTENT_RTN_CLASS_MARKER

public static final Object INCONSISTENT_RTN_CLASS_MARKER

REMOVED_ENTITY_MARKER

public static final Object REMOVED_ENTITY_MARKER

Method Details

doLoad

protected Object doLoad(LoadEvent event,
                        EntityPersister persister,
                        EntityKey keyToLoad,
                        LoadEventListener.LoadType options)
Coordinates the efforts to load a given entity. First, an attempt is made to load the entity from the session-level cache. If not found there, an attempt is made to locate it in second-level cache. Lastly, an attempt is made to load it directly from the datasource.
Parameters:
event - The load event
persister - The persister for the entity being requested for load
keyToLoad - The EntityKey representing the entity to be loaded.
options - The load options.
Returns:
The loaded entity, or null.

load

protected Object load(LoadEvent event,
                      EntityPersister persister,
                      EntityKey keyToLoad,
                      LoadEventListener.LoadType options)
Perfoms the load of an entity.
Parameters:
event - The initiating load request event
persister - The persister corresponding to the entity to be loaded
keyToLoad - The key of the entity to be loaded
options - The defined load options
Returns:
The loaded entity.

loadFromDatasource

protected Object loadFromDatasource(LoadEvent event,
                                    EntityPersister persister,
                                    EntityKey keyToLoad,
                                    LoadEventListener.LoadType options)
Performs the process of loading an entity from the configured underlying datasource.
Parameters:
event - The load event
persister - The persister for the entity being requested for load
keyToLoad - The EntityKey representing the entity to be loaded.
options - The load options.
Returns:
The object loaded from the datasource, or null if not found.

loadFromSecondLevelCache

protected Object loadFromSecondLevelCache(LoadEvent event,
                                          EntityPersister persister,
                                          LoadEventListener.LoadType options)
Attempts to load the entity from the second-level cache.
Parameters:
event - The load event
persister - The persister for the entity being requested for load
options - The load options.
Returns:
The entity from the second-level cache, or null.

loadFromSessionCache

protected Object loadFromSessionCache(LoadEvent event,
                                      EntityKey keyToLoad,
                                      LoadEventListener.LoadType options)
            throws HibernateException
Attempts to locate the entity in the session-level cache.

If allowed to return nulls, then if the entity happens to be found in the session cache, we check the entity type for proper handling of entity hierarchies.

If checkDeleted was set to true, then if the entity is found in the session-level cache, it's current status within the session cache is checked to see if it has previously been scheduled for deletion.

Parameters:
event - The load event
keyToLoad - The EntityKey representing the entity to be loaded.
options - The load options.
Returns:
The entity from the session-level cache, or null.
Throws:
HibernateException - Generally indicates problems applying a lock-mode.

lockAndLoad

protected Object lockAndLoad(LoadEvent event,
                             EntityPersister persister,
                             EntityKey keyToLoad,
                             LoadEventListener.LoadType options,
                             SessionImplementor source)
If the class to be loaded has been configured with a cache, then lock given id in that cache and then perform the load.
Parameters:
event - The initiating load request event
persister - The persister corresponding to the entity to be loaded
keyToLoad - The key of the entity to be loaded
options - The defined load options
source - The originating session
Returns:
The loaded entity

onLoad

public void onLoad(LoadEvent event,
                   LoadEventListener.LoadType loadType)
            throws HibernateException
Handle the given load event.
Specified by:
onLoad in interface LoadEventListener
Parameters:
event - The load event to be handled.

proxyOrLoad

protected Object proxyOrLoad(LoadEvent event,
                             EntityPersister persister,
                             EntityKey keyToLoad,
                             LoadEventListener.LoadType options)
Based on configured options, will either return a pre-existing proxy, generate a new proxy, or perform an actual load.
Parameters:
event - The initiating load request event
persister - The persister corresponding to the entity to be loaded
keyToLoad - The key of the entity to be loaded
options - The defined load options
Returns:
The result of the proxy/load operation.