Save This Page
Home » hibernate-distribution-3.3.1.GA-dist » org.hibernate » loader » [javadoc | source]
org.hibernate.loader
abstract public class: Loader [javadoc | source]
java.lang.Object
   org.hibernate.loader.Loader

Direct Known Subclasses:
    CriteriaLoader, OuterJoinLoader, AbstractEntityLoader, OneToManyLoader, CascadeEntityLoader, CollectionElementLoader, EntityLoader, SubselectOneToManyLoader, CollectionLoader, CustomLoader, BasicCollectionLoader, BasicLoader, QueryLoader, SubselectCollectionLoader, QueryTranslatorImpl, AbstractEntityLoader

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.
Constructor:
 public Loader(SessionFactoryImplementor factory) 
Method from org.hibernate.loader.Loader Summary:
applyLocks,   autoDiscoverTypes,   bindNamedParameters,   bindParameterValues,   bindPositionalParameters,   checkScrollability,   doList,   getAliases,   getCollectionAliases,   getCollectionOwners,   getCollectionPersisters,   getEntityAliases,   getEntityEagerPropertyFetches,   getEntityPersisters,   getFactory,   getLockModes,   getNamedParameterLocs,   getOwnerAssociationTypes,   getOwners,   getQueryIdentifier,   getResultColumnOrRow,   getResultList,   getResultSet,   getSQLString,   hasSubselectLoadableCollections,   isSingleRowLoader,   isSubselectLoadingEnabled,   list,   loadCollection,   loadCollectionBatch,   loadCollectionSubselect,   loadEntity,   loadEntity,   loadEntityBatch,   loadSequentialRowsForward,   loadSequentialRowsReverse,   loadSingleRow,   needsFetchingScroll,   postInstantiate,   prepareQueryStatement,   preprocessSQL,   scroll,   toString,   upgradeLocks
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.hibernate.loader.Loader Detail:
 protected String applyLocks(String sql,
    Map lockModes,
    Dialect dialect) throws HibernateException 
    Append FOR UPDATE OF clause, if necessary. This empty superclass implementation merely returns its first argument.
 protected  void autoDiscoverTypes(ResultSet rs) 
 protected int bindNamedParameters(PreparedStatement statement,
    Map namedParams,
    int startIndex,
    SessionImplementor session) throws HibernateException, SQLException 
    Bind named parameters to the JDBC prepared statement.

    This is a generic implementation, the problem being that in the general case we do not know enough information about the named parameters to perform this in a complete manner here. Thus this is generally overridden on subclasses allowing named parameters to apply the specific behavior. The most usual limitation here is that we need to assume the type span is always one...

 protected int bindParameterValues(PreparedStatement statement,
    QueryParameters queryParameters,
    int startIndex,
    SessionImplementor session) throws SQLException 
    Bind all parameter values into the prepared statement in preparation for execution.
 protected int bindPositionalParameters(PreparedStatement statement,
    QueryParameters queryParameters,
    int startIndex,
    SessionImplementor session) throws HibernateException, SQLException 
    Bind positional parameter values to the JDBC prepared statement.

    Postional parameters are those specified by JDBC-style ? parameters in the source query. It is (currently) expected that these come before any named parameters in the source query.

 protected  void checkScrollability() throws HibernateException 
    Check whether the current loader can support returning ScrollableResults.
 protected List doList(SessionImplementor session,
    QueryParameters queryParameters) throws HibernateException 
    Actually execute a query, ignoring the query cache
 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
 abstract protected 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. in the case of a collection initializer) or no collection.
 protected CollectionPersister[] getCollectionPersisters() 
    An (optional) persister for a collection to be initialized; only collection loaders return a non-null value
 abstract protected EntityAliases[] getEntityAliases()
    Get the result set descriptor
 protected boolean[] getEntityEagerPropertyFetches() 
    An array indicating whether the entities have eager property fetching enabled.
 abstract protected Loadable[] getEntityPersisters()
    An array of persisters of entity classes contained in each row of results; implemented by all subclasses
 public final SessionFactoryImplementor getFactory() 
 abstract protected LockMode[] getLockModes(Map lockModes)
    What lock mode does this load entities with?
 public int[] getNamedParameterLocs(String name) 
 protected EntityType[] getOwnerAssociationTypes() 
    An array of the owner types corresponding to the #getOwners() returns. Indices indicating no owner would be null here.
 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"). The indexes contained here are relative to the result of #getEntityPersisters .
 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) throws HibernateException, SQLException 
    Get the actual object that is returned in the user-visible result list. This empty implementation merely returns its first argument. This is overridden by some subclasses.
 protected List getResultList(List results,
    ResultTransformer resultTransformer) throws QueryException 
 protected final ResultSet getResultSet(PreparedStatement st,
    boolean autodiscovertypes,
    boolean callable,
    RowSelection selection,
    SessionImplementor session) throws HibernateException, SQLException 
    Fetch a PreparedStatement, call setMaxRows and then execute it, advance to the first result and return an SQL ResultSet
 abstract protected String getSQLString()
    The SQL query string to be called; implemented by all subclasses
 protected boolean hasSubselectLoadableCollections() 
 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) throws HibernateException 
    Return the query results, using the query cache, called by subclasses that implement cacheable queries
 public final  void loadCollection(SessionImplementor session,
    Serializable id,
    Type type) throws HibernateException 
    Called by subclasses that initialize collections
 public final  void loadCollectionBatch(SessionImplementor session,
    Serializable[] ids,
    Type type) throws HibernateException 
    Called by wrappers that batch initialize collections
 protected final  void loadCollectionSubselect(SessionImplementor session,
    Serializable[] ids,
    Object[] parameterValues,
    Type[] parameterTypes,
    Map namedParameters,
    Type type) throws HibernateException 
    Called by subclasses that batch initialize collections
 protected final List loadEntity(SessionImplementor session,
    Object key,
    Object index,
    Type keyType,
    Type indexType,
    EntityPersister persister) throws HibernateException 
    Called by subclasses that load entities
 protected final List loadEntity(SessionImplementor session,
    Object id,
    Type identifierType,
    Object optionalObject,
    String optionalEntityName,
    Serializable optionalIdentifier,
    EntityPersister persister) throws HibernateException 
    Called by subclasses that load entities
 public final List loadEntityBatch(SessionImplementor session,
    Serializable[] ids,
    Type idType,
    Object optionalObject,
    String optionalEntityName,
    Serializable optionalId,
    EntityPersister persister) throws HibernateException 
    Called by wrappers that batch load entities
 public Object loadSequentialRowsForward(ResultSet resultSet,
    SessionImplementor session,
    QueryParameters queryParameters,
    boolean returnProxies) throws HibernateException 
    Loads a single logical row from the result set moving forward. This is the processing used from the ScrollableResults where there were collection fetches encountered; thus a single logical row may have multiple rows in the underlying result set.
 public Object loadSequentialRowsReverse(ResultSet resultSet,
    SessionImplementor session,
    QueryParameters queryParameters,
    boolean returnProxies,
    boolean isLogicallyAfterLast) throws HibernateException 
    Loads a single logical row from the result set moving forward. This is the processing used from the ScrollableResults where there were collection fetches encountered; thus a single logical row may have multiple rows in the underlying result set.
 public Object loadSingleRow(ResultSet resultSet,
    SessionImplementor session,
    QueryParameters queryParameters,
    boolean returnProxies) throws HibernateException 
    Loads a single row from the result set. This is the processing used from the ScrollableResults where no collection fetches were encountered.
 protected boolean needsFetchingScroll() 
    Does the result set to be scrolled contain collection fetches?
 protected  void postInstantiate() 
    Calculate and cache select-clause suffixes. Must be called by subclasses after instantiation.
 protected final PreparedStatement prepareQueryStatement(QueryParameters queryParameters,
    boolean scroll,
    SessionImplementor session) throws HibernateException, SQLException 
    Obtain a PreparedStatement with all parameters pre-bound. Bind JDBC-style ? parameters, named parameters, and limit parameters.
 protected String preprocessSQL(String sql,
    QueryParameters parameters,
    Dialect dialect) throws HibernateException 
    Modify the SQL, adding lock hints and comments, if necessary
 protected ScrollableResults scroll(QueryParameters queryParameters,
    Type[] returnTypes,
    HolderInstantiator holderInstantiator,
    SessionImplementor session) throws HibernateException 
    Return the query results, as an instance of ScrollableResults
 public String toString() 
 protected boolean upgradeLocks() 
    Does this query return objects that might be already cached by the session, whose lock mode may need upgrading