public abstract class Loader extends Object
Loadable
Modifier and Type | Class and Description |
---|---|
protected static class |
Loader.SqlStatementWrapper
|
Modifier and Type | Field and Description |
---|---|
protected static boolean |
DEBUG_ENABLED |
protected static CoreMessageLogger |
LOG |
Constructor and Description |
---|
Loader(SessionFactoryImplementor factory) |
Modifier and Type | Method and Description |
---|---|
protected String |
applyLocks(String sql,
QueryParameters parameters,
Dialect dialect,
List<AfterLoadAction> afterLoadActions)
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<String,TypedValue> 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 LockMode |
determineFollowOnLockMode(LockOptions lockOptions) |
protected List |
doList(SessionImplementor session,
QueryParameters queryParameters)
Actually execute a query, ignoring the query cache
|
List |
doQueryAndInitializeNonLazyCollections(SessionImplementor session,
QueryParameters queryParameters,
boolean returnProxies)
Execute an SQL query and attempt to instantiate instances of the class mapped by the given
persister from each row of the ResultSet.
|
List |
doQueryAndInitializeNonLazyCollections(SessionImplementor session,
QueryParameters queryParameters,
boolean returnProxies,
ResultTransformer forcedResultTransformer) |
protected Loader.SqlStatementWrapper |
executeQueryStatement(QueryParameters queryParameters,
boolean scroll,
List<AfterLoadAction> afterLoadActions,
SessionImplementor session)
Process query string by applying filters, LIMIT clause, locks and comments if necessary.
|
protected Loader.SqlStatementWrapper |
executeQueryStatement(String sqlStatement,
QueryParameters queryParameters,
boolean scroll,
List<AfterLoadAction> afterLoadActions,
SessionImplementor session) |
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 LimitHandler |
getLimitHandler(RowSelection selection)
Build LIMIT clause handler applicable for given selection criteria.
|
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,
RowSelection selection,
LimitHandler limitHandler,
boolean autodiscovertypes,
SessionImplementor session)
Execute given PreparedStatement, advance to the first result and return SQL ResultSet.
|
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<Serializable> 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<String,TypedValue> 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(String sql,
QueryParameters queryParameters,
LimitHandler limitHandler,
boolean scroll,
SessionImplementor session)
Obtain a PreparedStatement with all parameters pre-bound.
|
protected String |
preprocessSQL(String sql,
QueryParameters parameters,
Dialect dialect,
List<AfterLoadAction> afterLoadActions)
Modify the SQL, adding lock hints and comments, if necessary
|
protected List |
processResultSet(ResultSet rs,
QueryParameters queryParameters,
SessionImplementor session,
boolean returnProxies,
ResultTransformer forcedResultTransformer,
int maxRows,
List<AfterLoadAction> afterLoadActions) |
protected void |
putResultInQueryCache(SessionImplementor session,
QueryParameters queryParameters,
Type[] resultTypes,
QueryCache queryCache,
QueryKey key,
List result) |
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
|
protected boolean |
shouldUseFollowOnLocking(QueryParameters parameters,
Dialect dialect,
List<AfterLoadAction> afterLoadActions) |
String |
toString() |
protected boolean |
upgradeLocks()
Does this query return objects that might be already cached
by the session, whose lock mode may need upgrading
|
protected static final CoreMessageLogger LOG
protected static final boolean DEBUG_ENABLED
public Loader(SessionFactoryImplementor factory)
public 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, QueryParameters parameters, Dialect dialect, List<AfterLoadAction> afterLoadActions) throws HibernateException
HibernateException
protected boolean upgradeLocks()
protected boolean isSingleRowLoader()
protected String[] getAliases()
protected String preprocessSQL(String sql, QueryParameters parameters, Dialect dialect, List<AfterLoadAction> afterLoadActions) throws HibernateException
HibernateException
protected boolean shouldUseFollowOnLocking(QueryParameters parameters, Dialect dialect, List<AfterLoadAction> afterLoadActions)
protected LockMode determineFollowOnLockMode(LockOptions lockOptions)
public List doQueryAndInitializeNonLazyCollections(SessionImplementor session, QueryParameters queryParameters, boolean returnProxies) throws HibernateException, SQLException
HibernateException
SQLException
public List doQueryAndInitializeNonLazyCollections(SessionImplementor session, QueryParameters queryParameters, boolean returnProxies, ResultTransformer forcedResultTransformer) throws HibernateException, SQLException
HibernateException
SQLException
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 generatedHibernateException
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 generatedHibernateException
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 generatedHibernateException
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 List processResultSet(ResultSet rs, QueryParameters queryParameters, SessionImplementor session, boolean returnProxies, ResultTransformer forcedResultTransformer, int maxRows, List<AfterLoadAction> afterLoadActions) throws SQLException
SQLException
protected boolean isSubselectLoadingEnabled()
protected boolean hasSubselectLoadableCollections()
protected ResultTransformer resolveResultTransformer(ResultTransformer resultTransformer)
resultTransformer
- the specified result transformerprotected 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 LimitHandler getLimitHandler(RowSelection selection)
NoopLimitHandler
delegate
if dialect does not support LIMIT expression or processed query does not use pagination.selection
- Selection criteria.protected Loader.SqlStatementWrapper executeQueryStatement(QueryParameters queryParameters, boolean scroll, List<AfterLoadAction> afterLoadActions, SessionImplementor session) throws SQLException
SQLException
protected Loader.SqlStatementWrapper executeQueryStatement(String sqlStatement, QueryParameters queryParameters, boolean scroll, List<AfterLoadAction> afterLoadActions, SessionImplementor session) throws SQLException
SQLException
protected final PreparedStatement prepareQueryStatement(String sql, QueryParameters queryParameters, LimitHandler limitHandler, 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<String,TypedValue> 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, RowSelection selection, LimitHandler limitHandler, boolean autodiscovertypes, 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
HibernateException
protected final List loadEntity(SessionImplementor session, Object key, Object index, Type keyType, Type indexType, EntityPersister persister) throws HibernateException
persister
- only needed for loggingHibernateException
public final List loadEntityBatch(SessionImplementor session, Serializable[] ids, Type idType, Object optionalObject, String optionalEntityName, Serializable optionalId, EntityPersister persister, LockOptions lockOptions) throws HibernateException
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<String,TypedValue> namedParameters, Type type) throws HibernateException
HibernateException
protected List list(SessionImplementor session, QueryParameters queryParameters, Set<Serializable> querySpaces, Type[] resultTypes) throws HibernateException
HibernateException
protected void putResultInQueryCache(SessionImplementor session, QueryParameters queryParameters, Type[] resultTypes, QueryCache queryCache, QueryKey key, List result)
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()
Copyright © 2017 JBoss by Red Hat. All rights reserved.