|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.hibernate.loader.Loader
public abstract class Loader
Abstract superclass of object loading (and querying) strategies. This class implements
useful common functionality that concrete loaders delegate to. It is not intended that this
functionality would be directly accessed by client code. (Hence, all methods of this class
are declared protected or private.) This class relies heavily upon the
Loadable interface, which is the contract between this class and
EntityPersisters that may be loaded by it.
The present implementation is able to load any number of columns of entities and at most
one collection role per query.
Loadable
Field Summary | |
---|---|
protected static CoreMessageLogger |
LOG
|
Constructor Summary | |
---|---|
Loader(SessionFactoryImplementor factory)
|
Method Summary | |
---|---|
protected String |
applyLocks(String sql,
LockOptions lockOptions,
Dialect dialect)
Append FOR UPDATE OF clause, if necessary. |
protected void |
applyPostLoadLocks(Object[] row,
LockMode[] lockModesArray,
SessionImplementor session)
|
protected boolean |
areResultSetRowsTransformedImmediately()
Are rows transformed immediately after being read from the ResultSet? |
protected void |
autoDiscoverTypes(ResultSet rs)
|
protected int |
bindNamedParameters(PreparedStatement statement,
Map namedParams,
int startIndex,
SessionImplementor session)
Bind named parameters to the JDBC prepared statement. |
protected int |
bindParameterValues(PreparedStatement statement,
QueryParameters queryParameters,
int startIndex,
SessionImplementor session)
Bind all parameter values into the prepared statement in preparation for execution. |
protected int |
bindPositionalParameters(PreparedStatement statement,
QueryParameters queryParameters,
int startIndex,
SessionImplementor session)
Bind positional parameter values to the JDBC prepared statement. |
protected void |
checkScrollability()
Check whether the current loader can support returning ScrollableResults. |
protected List |
doList(SessionImplementor session,
QueryParameters queryParameters)
Actually execute a query, ignoring the query cache |
protected void |
extractKeysFromResultSet(Loadable[] persisters,
QueryParameters queryParameters,
ResultSet resultSet,
SessionImplementor session,
EntityKey[] keys,
LockMode[] lockModes,
List hydratedObjects)
|
protected String[] |
getAliases()
Get the SQL table aliases of entities whose associations are subselect-loadable, returning null if this loader does not support subselect loading |
protected abstract CollectionAliases[] |
getCollectionAliases()
|
protected int[] |
getCollectionOwners()
Get the index of the entity that owns the collection, or -1 if there is no owner in the query results (ie. |
protected CollectionPersister[] |
getCollectionPersisters()
An (optional) persister for a collection to be initialized; only collection loaders return a non-null value |
protected int[][] |
getCompositeKeyManyToOneTargetIndices()
|
protected abstract EntityAliases[] |
getEntityAliases()
Get the result set descriptor |
protected boolean[] |
getEntityEagerPropertyFetches()
An array indicating whether the entities have eager property fetching enabled. |
protected abstract Loadable[] |
getEntityPersisters()
An array of persisters of entity classes contained in each row of results; implemented by all subclasses |
SessionFactoryImplementor |
getFactory()
|
protected abstract LockMode[] |
getLockModes(LockOptions lockOptions)
What lock options does this load entities with? |
int[] |
getNamedParameterLocs(String name)
|
protected EntityType[] |
getOwnerAssociationTypes()
An array of the owner types corresponding to the getOwners()
returns. |
protected int[] |
getOwners()
An array of indexes of the entity that owns a one-to-one association to the entity at the given index (-1 if there is no "owner"). |
protected String |
getQueryIdentifier()
Identifies the query for statistics reporting, if null, no statistics will be reported |
protected Object |
getResultColumnOrRow(Object[] row,
ResultTransformer transformer,
ResultSet rs,
SessionImplementor session)
Get the actual object that is returned in the user-visible result list. |
protected List |
getResultList(List results,
ResultTransformer resultTransformer)
|
protected Object[] |
getResultRow(Object[] row,
ResultSet rs,
SessionImplementor session)
|
protected String[] |
getResultRowAliases()
Returns the aliases that corresponding to a result row. |
protected ResultSet |
getResultSet(PreparedStatement st,
boolean autodiscovertypes,
boolean callable,
RowSelection selection,
SessionImplementor session)
Fetch a PreparedStatement, call setMaxRows and then execute it, advance to the first result and return an SQL ResultSet |
protected abstract String |
getSQLString()
The SQL query string to be called; implemented by all subclasses |
protected boolean |
hasSubselectLoadableCollections()
|
protected boolean[] |
includeInResultRow()
|
protected boolean |
isSingleRowLoader()
Return false is this loader is a batch entity loader |
protected boolean |
isSubselectLoadingEnabled()
|
protected List |
list(SessionImplementor session,
QueryParameters queryParameters,
Set querySpaces,
Type[] resultTypes)
Return the query results, using the query cache, called by subclasses that implement cacheable queries |
void |
loadCollection(SessionImplementor session,
Serializable id,
Type type)
Called by subclasses that initialize collections |
void |
loadCollectionBatch(SessionImplementor session,
Serializable[] ids,
Type type)
Called by wrappers that batch initialize collections |
protected void |
loadCollectionSubselect(SessionImplementor session,
Serializable[] ids,
Object[] parameterValues,
Type[] parameterTypes,
Map namedParameters,
Type type)
Called by subclasses that batch initialize collections |
protected List |
loadEntity(SessionImplementor session,
Object key,
Object index,
Type keyType,
Type indexType,
EntityPersister persister)
Called by subclasses that load entities |
protected List |
loadEntity(SessionImplementor session,
Object id,
Type identifierType,
Object optionalObject,
String optionalEntityName,
Serializable optionalIdentifier,
EntityPersister persister,
LockOptions lockOptions)
Called by subclasses that load entities |
List |
loadEntityBatch(SessionImplementor session,
Serializable[] ids,
Type idType,
Object optionalObject,
String optionalEntityName,
Serializable optionalId,
EntityPersister persister,
LockOptions lockOptions)
Called by wrappers that batch load entities |
Object |
loadSequentialRowsForward(ResultSet resultSet,
SessionImplementor session,
QueryParameters queryParameters,
boolean returnProxies)
Loads a single logical row from the result set moving forward. |
Object |
loadSequentialRowsReverse(ResultSet resultSet,
SessionImplementor session,
QueryParameters queryParameters,
boolean returnProxies,
boolean isLogicallyAfterLast)
Loads a single logical row from the result set moving forward. |
Object |
loadSingleRow(ResultSet resultSet,
SessionImplementor session,
QueryParameters queryParameters,
boolean returnProxies)
Loads a single row from the result set. |
protected boolean |
needsFetchingScroll()
Does the result set to be scrolled contain collection fetches? |
protected void |
postInstantiate()
Calculate and cache select-clause suffixes. |
protected PreparedStatement |
prepareQueryStatement(QueryParameters queryParameters,
boolean scroll,
SessionImplementor session)
Obtain a PreparedStatement with all parameters pre-bound. |
protected String |
preprocessSQL(String sql,
QueryParameters parameters,
Dialect dialect)
Modify the SQL, adding lock hints and comments, if necessary |
protected ResultTransformer |
resolveResultTransformer(ResultTransformer resultTransformer)
Determine the actual ResultTransformer that will be used to transform query results. |
protected ScrollableResults |
scroll(QueryParameters queryParameters,
Type[] returnTypes,
HolderInstantiator holderInstantiator,
SessionImplementor session)
Return the query results, as an instance of ScrollableResults |
String |
toString()
|
protected boolean |
upgradeLocks()
Does this query return objects that might be already cached by the session, whose lock mode may need upgrading |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static final CoreMessageLogger LOG
Constructor Detail |
---|
public Loader(SessionFactoryImplementor factory)
Method Detail |
---|
protected abstract String getSQLString()
ResultSet
.protected abstract Loadable[] getEntityPersisters()
protected boolean[] getEntityEagerPropertyFetches()
protected int[] getOwners()
getEntityPersisters()
.
protected EntityType[] getOwnerAssociationTypes()
getOwners()
returns. Indices indicating no owner would be null here.
protected CollectionPersister[] getCollectionPersisters()
protected int[] getCollectionOwners()
protected int[][] getCompositeKeyManyToOneTargetIndices()
protected abstract LockMode[] getLockModes(LockOptions lockOptions)
lockOptions
- a collection of lock options specified dynamically via the Query interfaceprotected String applyLocks(String sql, LockOptions lockOptions, Dialect dialect) throws HibernateException
HibernateException
protected boolean upgradeLocks()
protected boolean isSingleRowLoader()
protected String[] getAliases()
protected String preprocessSQL(String sql, QueryParameters parameters, Dialect dialect) throws HibernateException
HibernateException
public Object loadSingleRow(ResultSet resultSet, SessionImplementor session, QueryParameters queryParameters, boolean returnProxies) throws HibernateException
resultSet
- The result set from which to do the load.session
- The session from which the request originated.queryParameters
- The query parameters specified by the user.returnProxies
- Should proxies be generated
HibernateException
public Object loadSequentialRowsForward(ResultSet resultSet, SessionImplementor session, QueryParameters queryParameters, boolean returnProxies) throws HibernateException
resultSet
- The result set from which to do the load.session
- The session from which the request originated.queryParameters
- The query parameters specified by the user.returnProxies
- Should proxies be generated
HibernateException
public Object loadSequentialRowsReverse(ResultSet resultSet, SessionImplementor session, QueryParameters queryParameters, boolean returnProxies, boolean isLogicallyAfterLast) throws HibernateException
resultSet
- The result set from which to do the load.session
- The session from which the request originated.queryParameters
- The query parameters specified by the user.returnProxies
- Should proxies be generated
HibernateException
protected void extractKeysFromResultSet(Loadable[] persisters, QueryParameters queryParameters, ResultSet resultSet, SessionImplementor session, EntityKey[] keys, LockMode[] lockModes, List hydratedObjects) throws SQLException
SQLException
protected void applyPostLoadLocks(Object[] row, LockMode[] lockModesArray, SessionImplementor session)
protected boolean isSubselectLoadingEnabled()
protected boolean hasSubselectLoadableCollections()
protected ResultTransformer resolveResultTransformer(ResultTransformer resultTransformer)
resultTransformer
- the specified result transformer
protected List getResultList(List results, ResultTransformer resultTransformer) throws QueryException
QueryException
protected boolean areResultSetRowsTransformedImmediately()
protected String[] getResultRowAliases()
protected Object getResultColumnOrRow(Object[] row, ResultTransformer transformer, ResultSet rs, SessionImplementor session) throws SQLException, HibernateException
SQLException
HibernateException
protected boolean[] includeInResultRow()
protected Object[] getResultRow(Object[] row, ResultSet rs, SessionImplementor session) throws SQLException, HibernateException
SQLException
HibernateException
protected final PreparedStatement prepareQueryStatement(QueryParameters queryParameters, boolean scroll, SessionImplementor session) throws SQLException, HibernateException
SQLException
HibernateException
protected int bindParameterValues(PreparedStatement statement, QueryParameters queryParameters, int startIndex, SessionImplementor session) throws SQLException
statement
- The JDBC prepared statementqueryParameters
- The encapsulation of the parameter values to be bound.startIndex
- The position from which to start binding parameter values.session
- The originating session.
SQLException
- Indicates problems performing the binding.protected int bindPositionalParameters(PreparedStatement statement, QueryParameters queryParameters, int startIndex, SessionImplementor session) throws SQLException, HibernateException
statement
- The JDBC prepared statementqueryParameters
- The encapsulation of the parameter values to be bound.startIndex
- The position from which to start binding parameter values.session
- The originating session.
SQLException
- Indicates problems performing the binding.
HibernateException
- Indicates problems delegating binding to the types.protected int bindNamedParameters(PreparedStatement statement, Map namedParams, int startIndex, SessionImplementor session) throws SQLException, HibernateException
statement
- The JDBC prepared statementnamedParams
- A map of parameter names to valuesstartIndex
- The position from which to start binding parameter values.session
- The originating session.
SQLException
- Indicates problems performing the binding.
HibernateException
- Indicates problems delegating binding to the types.public int[] getNamedParameterLocs(String name)
protected final ResultSet getResultSet(PreparedStatement st, boolean autodiscovertypes, boolean callable, RowSelection selection, SessionImplementor session) throws SQLException, HibernateException
SQLException
HibernateException
protected void autoDiscoverTypes(ResultSet rs)
protected final List loadEntity(SessionImplementor session, Object id, Type identifierType, Object optionalObject, String optionalEntityName, Serializable optionalIdentifier, EntityPersister persister, LockOptions lockOptions) throws HibernateException
persister
- only needed for logginglockOptions
-
HibernateException
protected final List loadEntity(SessionImplementor session, Object key, Object index, Type keyType, Type indexType, EntityPersister persister) throws HibernateException
persister
- only needed for logging
HibernateException
public final List loadEntityBatch(SessionImplementor session, Serializable[] ids, Type idType, Object optionalObject, String optionalEntityName, Serializable optionalId, EntityPersister persister, LockOptions lockOptions) throws HibernateException
persister
- only needed for logginglockOptions
-
HibernateException
public final void loadCollection(SessionImplementor session, Serializable id, Type type) throws HibernateException
HibernateException
public final void loadCollectionBatch(SessionImplementor session, Serializable[] ids, Type type) throws HibernateException
HibernateException
protected final void loadCollectionSubselect(SessionImplementor session, Serializable[] ids, Object[] parameterValues, Type[] parameterTypes, Map namedParameters, Type type) throws HibernateException
HibernateException
protected List list(SessionImplementor session, QueryParameters queryParameters, Set querySpaces, Type[] resultTypes) throws HibernateException
HibernateException
protected List doList(SessionImplementor session, QueryParameters queryParameters) throws HibernateException
HibernateException
protected void checkScrollability() throws HibernateException
HibernateException
protected boolean needsFetchingScroll()
protected ScrollableResults scroll(QueryParameters queryParameters, Type[] returnTypes, HolderInstantiator holderInstantiator, SessionImplementor session) throws HibernateException
queryParameters
- The parameters with which the query should be executed.returnTypes
- The expected return types of the queryholderInstantiator
- If the return values are expected to be wrapped
in a holder, this is the thing that knows how to wrap them.session
- The session from which the scroll request originated.
HibernateException
- Indicates an error executing the query, or constructing
the ScrollableResults.protected void postInstantiate()
protected abstract EntityAliases[] getEntityAliases()
protected abstract CollectionAliases[] getCollectionAliases()
protected String getQueryIdentifier()
public final SessionFactoryImplementor getFactory()
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |