org.hibernate.engine.loading

Class LoadContexts


public class LoadContexts
extends java.lang.Object

Maps result-sets to specific contextual data related to processing that result-sets.

Implementation note: internally an IdentityMap is used to maintain the mappings; IdentityMap was chosen because I'd rather not be dependent upon potentially bad ResultSet.equals and {ResultSet#hashCode} implementations.

Considering the JDBC-redesign work, would further like this contextual info not mapped seperately, but available based on the result set being processed. This would also allow maintaining a single mapping as we could reliably get notification of the result-set closing...

Author:
Steve Ebersole

Constructor Summary

LoadContexts(PersistenceContext persistenceContext)
Creates and binds this to the given persistence context.

Method Summary

void
cleanup()
Release internal state associated with *all* result sets.
void
cleanup(ResultSet resultSet)
Release internal state associated with the given result set.
CollectionLoadContext
getCollectionLoadContext(ResultSet resultSet)
Get the CollectionLoadContext associated with the given ResultSet, creating one if needed.
EntityLoadContext
getEntityLoadContext(ResultSet resultSet)
PersistenceContext
getPersistenceContext()
Retrieves the persistence context to which this is bound.
boolean
hasLoadingCollectionEntries()
Do we currently have any internal entries corresponding to loading collections?
boolean
hasRegisteredLoadingCollectionEntries()
Do we currently have any registered internal entries corresponding to loading collections?
PersistentCollection
locateLoadingCollection(CollectionPersister persister, Serializable ownerKey)
Attempt to locate the loading collection given the owner's key.

Constructor Details

LoadContexts

public LoadContexts(PersistenceContext persistenceContext)
Creates and binds this to the given persistence context.
Parameters:
persistenceContext - The persistence context to which this will be bound.

Method Details

cleanup

public void cleanup()
Release internal state associated with *all* result sets.

This is intended as a "failsafe" process to make sure we get everything cleaned up and released.


cleanup

public void cleanup(ResultSet resultSet)
Release internal state associated with the given result set.

This should be called when we are done with processing said result set, ideally as the result set is being closed.

Parameters:
resultSet - The result set for which it is ok to release associated resources.

getCollectionLoadContext

public CollectionLoadContext getCollectionLoadContext(ResultSet resultSet)
Get the CollectionLoadContext associated with the given ResultSet, creating one if needed.
Parameters:
resultSet - The result set for which to retrieve the context.
Returns:
The processing context.

getEntityLoadContext

public EntityLoadContext getEntityLoadContext(ResultSet resultSet)

getPersistenceContext

public PersistenceContext getPersistenceContext()
Retrieves the persistence context to which this is bound.
Returns:
The persistence context to which this is bound.

hasLoadingCollectionEntries

public boolean hasLoadingCollectionEntries()
Do we currently have any internal entries corresponding to loading collections?
Returns:
True if we currently hold state pertaining to loading collections; false otherwise.

hasRegisteredLoadingCollectionEntries

public boolean hasRegisteredLoadingCollectionEntries()
Do we currently have any registered internal entries corresponding to loading collections?
Returns:
True if we currently hold state pertaining to a registered loading collections; false otherwise.

locateLoadingCollection

public PersistentCollection locateLoadingCollection(CollectionPersister persister,
                                                    Serializable ownerKey)
Attempt to locate the loading collection given the owner's key. The lookup here occurs against all result-set contexts...
Parameters:
persister - The collection persister
ownerKey - The owner key
Returns:
The loading collection, or null if not found.