## org.hibernate.impl
Class SessionImpl

    java.lang.Object
      org.hibernate.impl.AbstractSessionImpl
          org.hibernate.impl.SessionImpl

All Implemented Interfaces:
  Serializable, LobCreationContext, SessionImplementor, EventSource, JDBCContext.Context, Session, TransactionFactory.Context

    public final class SessionImpl

extends AbstractSessionImpl
implements EventSource, Session, JDBCContext.Context, LobCreationContext

Concrete implementation of a Session, and also the central, organizing component of Hibernate's internal implementation. As such, this class exposes two interfaces; Session itself, to the application, and SessionImplementor, to other components of Hibernate. This class is not threadsafe.

Author:
  Gavin King
See Also:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from interface org.hibernate.Session
`Session.LockRequest`

Nested classes/interfaces inherited from interface org.hibernate.engine.jdbc.LobCreationContext
`LobCreationContext.Callback`

Field Summary

Fields inherited from class org.hibernate.impl.AbstractSessionImpl
`factory`

Method Summary
`void` `afterOperation(boolean success)` Check if there is a Hibernate or JTA transaction in progress and, if there is not, flush if necessary, make sure the connection has been committed (if it is not in autocommit mode) and run the after completion processing
`void` `afterScrollOperation()`
`void` `afterTransactionBegin(Transaction tx)` We cannot rely upon this method being called! It is only called if we are using Hibernate Transaction API.
`void` `afterTransactionCompletion(boolean success, Transaction tx)` Notify the session that the transaction completed, so we no longer own the old locks.
`void` `applyNonFlushedChanges(NonFlushedChanges nonFlushedChanges)` Apply non-flushed changes from a different session to this session.
`protected boolean` `autoFlushIfRequired(Set querySpaces)` detect in-memory changes, determine if the changes are to tables named in the query and, if so, complete execution the flush
`void` `beforeTransactionCompletion(Transaction tx)` Notify the session that the transaction is about to complete
`Transaction` `beginTransaction()` Begin a unit of work and return the associated `Transaction` object.
`String` `bestGuessEntityName(Object object)` The best guess entity name for an entity not in an association
`Session.LockRequest` `buildLockRequest(LockOptions lockOptions)` Build a LockRequest that specifies the LockMode, pessimistic lock timeout and lock scope.
`void` `cancelQuery()` Cancel the execution of the current query.
`void` `clear()` Completely clear the session.
`Connection` `close()` End the session by releasing the JDBC connection and cleaning up.
`Connection` `connection()` Get the JDBC connection of this Session. If the session is using aggressive collection release (as in a CMT environment), it is the application's responsibility to close the connection returned by this call.
`boolean` `contains(Object object)` Check if this instance is associated with this `Session`.
`Criteria` `createCriteria(Class persistentClass)` Create a new `Criteria` instance, for the given entity class, or a superclass of an entity class.
`Criteria` `createCriteria(Class persistentClass, String alias)` Create a new `Criteria` instance, for the given entity class, or a superclass of an entity class, with the given alias.
`Criteria` `createCriteria(String entityName)` Create a new `Criteria` instance, for the given entity name.
`Criteria` `createCriteria(String entityName, String alias)` Create a new `Criteria` instance, for the given entity name, with the given alias.
`Query` `createFilter(Object collection, String queryString)` Create a new instance of `Query` for the given collection and filter string.
`Query` `createQuery(String queryString)` Create a new instance of `Query` for the given HQL query string.
`SQLQuery` `createSQLQuery(String sql)` Create a new instance of `SQLQuery` for the given SQL query string.
`Query` `createSQLQuery(String sql, String[] returnAliases, Class[] returnClasses)` Create a new instance of `Query` for the given SQL string.
`Query` `createSQLQuery(String sql, String returnAlias, Class returnClass)` Create a new instance of `Query` for the given SQL string.
`void` `delete(Object object)` Delete a persistent object
`int` `delete(String query)` Delete all objects returned by the query.
`void` `delete(String entityName, Object object)` Delete a persistent object (by explicit entity name)
`int` `delete(String query, Object[] values, Type[] types)` Delete all objects returned by the query.
`void` `delete(String entityName, Object object, boolean isCascadeDeleteEnabled, Set transientEntities)` Delete a persistent object
`int` `delete(String query, Object value, Type type)` Delete all objects returned by the query.
`void` `disableFetchProfile(String name)` Disable a particular fetch profile on this session.
`void` `disableFilter(String filterName)` Disable the named filter for the current session.
`Connection` `disconnect()` Disconnect the `Session` from the current JDBC connection.
`void` `doWork(Work work)` Controller for allowing users to perform JDBC related work using the Connection managed by this Session.
`void` `enableFetchProfile(String name)` Enable a particular fetch profile on this session.
`Filter` `enableFilter(String filterName)` Enable the named filter for this current session.
`void` `evict(Object object)` remove any hard references to the entity that are held by the infrastructure (references held by application or other persistant instances are okay)
`Object` `execute(LobCreationContext.Callback callback)` Execute the given callback, making sure it has access to a viable JDBC `Connection`.
`int` `executeNativeUpdate(NativeSQLQuerySpecification nativeQuerySpecification, QueryParameters queryParameters)` Execute a native SQL update or delete query
`int` `executeUpdate(String query, QueryParameters queryParameters)` Execute a HQL update or delete query
`Collection` `filter(Object collection, String filter)` Apply a filter to a persistent collection.
`Collection` `filter(Object collection, String filter, Object[] values, Type[] types)` Apply a filter to a persistent collection.
`Collection` `filter(Object collection, String filter, Object value, Type type)` Apply a filter to a persistent collection.
`List` `find(String query)` Retrieve a list of persistent objects using a hibernate query
`List` `find(String query, Object[] values, Type[] types)` Execute a query with bind parameters, binding an array of values to "?" parameters in the query string.
`List` `find(String query, Object value, Type type)` Execute a query with bind parameters, binding a value to a "?" parameter in the query string.
`void` `flush()` Force this session to flush.
`void` `forceFlush(EntityEntry entityEntry)` Force an immediate flush
`Object` `get(Class entityClass, Serializable id)` Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance.
`Object` `get(Class entityClass, Serializable id, LockMode lockMode)` Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance.
`Object` `get(Class entityClass, Serializable id, LockOptions lockOptions)` Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance.
`Object` `get(String entityName, Serializable id)` Return the persistent instance of the given named entity with the given identifier, or null if there is no such persistent instance.
`Object` `get(String entityName, Serializable id, LockMode lockMode)` Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance.
`Object` `get(String entityName, Serializable id, LockOptions lockOptions)` Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance.
`ActionQueue` `getActionQueue()` Get the ActionQueue for this session
`Batcher` `getBatcher()` Get the prepared statement `Batcher` for this session
`CacheMode` `getCacheMode()` Get the current cache mode.
`ConnectionReleaseMode` `getConnectionReleaseMode()`
`Serializable` `getContextEntityIdentifier(Object object)` Get the id value for an object that is actually associated with the session.
`LockMode` `getCurrentLockMode(Object object)` Determine the current lock mode of the given object.
`int` `getDontFlushFromFind()`
`Filter` `getEnabledFilter(String filterName)` Retrieve a currently enabled filter by name.
`Map` `getEnabledFilters()` Return the currently enabled filters.
`EntityMode` `getEntityMode()` Retrieve the entity mode in effect for this session.
`String` `getEntityName(Object object)` Return the entity name for a persistent entity
`EntityPersister` `getEntityPersister(String entityName, Object object)` Get the `EntityPersister` for any instance
`Object` `getEntityUsingInterceptor(EntityKey key)` Get the entity instance associated with the given `Key`, calling the Interceptor if necessary
`String` `getFetchProfile()` Get the internal fetch profile currently associated with this session.
`Type` `getFilterParameterType(String filterParameterName)` Retreive the type for a given filter parrameter.
`Object` `getFilterParameterValue(String filterParameterName)` Retreive the currently set value for a filter parameter.
`FlushMode` `getFlushMode()` Get the current flush mode for this session.
`Serializable` `getIdentifier(Object object)` Return the identifier value of the given entity as associated with this session.
`Interceptor` `getInterceptor()` Retrieves the interceptor currently in use by this event source.
`JDBCContext` `getJDBCContext()`
`EventListeners` `getListeners()` Retrieves the configured event listeners from this event source.
`LoadQueryInfluencers` `getLoadQueryInfluencers()` Get the load query influencers associated with this session.
`LobHelper` `getLobHelper()` Retrieve this session's helper/delegate for creating LOB instances.
`Query` `getNamedQuery(String queryName)` Get a Query instance for a named query or named native SQL query
`NonFlushedChanges` `getNonFlushedChanges()` Return changes to this session and its child sessions that have not been flushed yet.
`PersistenceContext` `getPersistenceContext()` Get the persistence context for this session
`Session` `getSession(EntityMode entityMode)` Starts a new Session with the given entity mode in effect.
`SessionFactory` `getSessionFactory()` Get the session factory which created this session.
`SessionStatistics` `getStatistics()` Get the statistics for this session.
`long` `getTimestamp()` System time before the start of the transaction
`Transaction` `getTransaction()` Get the `Transaction` instance associated with this session.
`TypeHelper` `getTypeHelper()` Convenience access to the `TypeHelper` associated with this session's `SessionFactory`.
`String` `guessEntityName(Object object)` The guessed entity name for an entity not in an association
`Object` `immediateLoad(String entityName, Serializable id)` Load the data for the object with the specified id into a newly created object.
`void` `initializeCollection(PersistentCollection collection, boolean writing)` Initialize the collection (if not already initialized)
`Object` `instantiate(EntityPersister persister, Serializable id)` give the interceptor an opportunity to override the default instantiation
`Object` `instantiate(String entityName, Serializable id)` Instantiate the entity class, initializing with the given identifier
`Object` `internalLoad(String entityName, Serializable id, boolean eager, boolean nullable)` Load an instance without checking if it was deleted.
`boolean` `isAutoCloseSessionEnabled()`
`boolean` `isConnected()` Check if the session is currently connected.
`boolean` `isDefaultReadOnly()` Will entities and proxies that are loaded into this session be made read-only by default? To determine the read-only/modifiable setting for a particular entity or proxy:
`boolean` `isDirty()` Does this session contain any changes which must be synchronized with the database? In other words, would any DML operations be executed if we flushed this session?
`boolean` `isEventSource()`
`boolean` `isFetchProfileEnabled(String name)` Is a particular fetch profile enabled on this session?
`boolean` `isFlushBeforeCompletionEnabled()`
`boolean` `isFlushModeNever()`
`boolean` `isOpen()` Check if the session is still open.
`boolean` `isReadOnly(Object entityOrProxy)` Is the specified entity or proxy read-only? To get the default read-only/modifiable setting used for entities and proxies that are loaded into the session:
`boolean` `isTransactionInProgress()` Does this `Session` have an active Hibernate transaction or is there a JTA transaction in progress?
`Iterator` `iterate(String query)` Execute a query and return the results in an iterator.
`Iterator` `iterate(String query, Object[] values, Type[] types)` Execute a query and return the results in an iterator.
`Iterator` `iterate(String query, Object value, Type type)` Execute a query and return the results in an iterator.
`Iterator` `iterate(String query, QueryParameters queryParameters)` Execute an `iterate()` query
`Iterator` `iterateFilter(Object collection, String filter, QueryParameters queryParameters)` Iterate a filter
`List` `list(CriteriaImpl criteria)` Execute a criteria query
`List` `list(String query, QueryParameters queryParameters)` Execute a `find()` query
`List` `listCustomQuery(CustomQuery customQuery, QueryParameters queryParameters)` Execute an SQL Query
`List` `listFilter(Object collection, String filter, QueryParameters queryParameters)` Execute a filter
`Object` `load(Class entityClass, Serializable id)` Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists.
`Object` `load(Class entityClass, Serializable id, LockMode lockMode)` Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.
`Object` `load(Class entityClass, Serializable id, LockOptions lockOptions)` Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.
`void` `load(Object object, Serializable id)` Read the persistent state associated with the given identifier into the given transient instance.
`Object` `load(String entityName, Serializable id)` Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists.
`Object` `load(String entityName, Serializable id, LockMode lockMode)` Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.
`Object` `load(String entityName, Serializable id, LockOptions lockOptions)` Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.
`void` `lock(Object object, LockMode lockMode)` Obtain the specified lock level upon the given object.
`void` `lock(String entityName, Object object, LockMode lockMode)` Obtain the specified lock level upon the given object.
`void` `managedClose()`
`void` `managedFlush()`
`Object` `merge(Object object)` Copy the state of the given object onto the persistent object with the same identifier.
`Object` `merge(String entityName, Object object)` Copy the state of the given object onto the persistent object with the same identifier.
`void` `merge(String entityName, Object object, Map copiedAlready)` Cascade merge an entity instance
`void` `persist(Object object)` Make a transient instance persistent.
`void` `persist(String entityName, Object object)` Make a transient instance persistent.
`void` `persist(String entityName, Object object, Map copiedAlready)` Cascade persist an entity instance
`void` `persistOnFlush(Object object)`
`void` `persistOnFlush(String entityName, Object object)`
`void` `persistOnFlush(String entityName, Object object, Map copiedAlready)` Cascade persist an entity instance during the flush process
`void` `reconnect()` Obtain a new JDBC connection.
`void` `reconnect(Connection conn)` Reconnect to the given JDBC connection.
`void` `refresh(Object object)` Re-read the state of the given instance from the underlying database.
`void` `refresh(Object object, LockMode lockMode)` Re-read the state of the given instance from the underlying database, with the given `LockMode`.
`void` `refresh(Object object, LockOptions lockOptions)` Re-read the state of the given instance from the underlying database, with the given `LockMode`.
`void` `refresh(Object object, Map refreshedAlready)` Cascade refesh an entity instance
`void` `replicate(Object obj, ReplicationMode replicationMode)` Persist the state of the given detached instance, reusing the current identifier value.
`void` `replicate(String entityName, Object obj, ReplicationMode replicationMode)` Persist the state of the given detached instance, reusing the current identifier value.
`Serializable` `save(Object obj)` Persist the given transient instance, first assigning a generated identifier.
`void` `save(Object obj, Serializable id)` Persist the given transient instance, using the given identifier.
`Serializable` `save(String entityName, Object object)` Persist the given transient instance, first assigning a generated identifier.
`void` `save(String entityName, Object object, Serializable id)` Persist the given transient instance, using the given identifier.
`void` `saveOrUpdate(Object object)` Either `Session.save(Object)` or `Session.update(Object)` the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking).
`void` `saveOrUpdate(String entityName, Object obj)` Either `Session.save(String, Object)` or `Session.update(String, Object)` the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking).
`Object` `saveOrUpdateCopy(Object object)` Copy the state of the given object onto the persistent object with the same identifier.
`Object` `saveOrUpdateCopy(Object object, Serializable id)` Copy the state of the given object onto the persistent object with the given identifier.
`Object` `saveOrUpdateCopy(String entityName, Object object)` Copy the state of the given object onto the persistent object with the same identifier.
`void` `saveOrUpdateCopy(String entityName, Object object, Map copiedAlready)` Cascade copy an entity instance
`Object` `saveOrUpdateCopy(String entityName, Object object, Serializable id)` Copy the state of the given object onto the persistent object with the given identifier.
`ScrollableResults` `scroll(CriteriaImpl criteria, ScrollMode scrollMode)` Execute a criteria query
`ScrollableResults` `scroll(String query, QueryParameters queryParameters)` Execute a `scroll()` query
`ScrollableResults` `scrollCustomQuery(CustomQuery customQuery, QueryParameters queryParameters)` Execute an SQL Query
`void` `setAutoClear(boolean enabled)` Enable/disable automatic cache clearing from after transaction completion (for EJB3)
`void` `setCacheMode(CacheMode cacheMode)` Set the cache mode.
`void` `setDefaultReadOnly(boolean defaultReadOnly)` Change the default for entities and proxies loaded into this session from modifiable to read-only mode, or from modifiable to read-only mode.
`void` `setFetchProfile(String fetchProfile)` Set the current internal fetch profile for this session.
`void` `setFlushMode(FlushMode flushMode)` Set the flush mode for this session.
`void` `setReadOnly(Object entity, boolean readOnly)` Set an unmodified persistent object to read-only mode, or a read-only object to modifiable mode.
`boolean` `shouldAutoClose()`
`String` `toString()`
`void` `update(Object obj)` Update the persistent instance with the identifier of the given detached instance.
`void` `update(Object obj, Serializable id)` Update the persistent state associated with the given identifier.
`void` `update(String entityName, Object object)` Update the persistent instance with the identifier of the given detached instance.
`void` `update(String entityName, Object object, Serializable id)` Update the persistent state associated with the given identifier.

Methods inherited from class org.hibernate.impl.AbstractSessionImpl
`errorIfClosed, getFactory, getHQLQueryPlan, getNamedSQLQuery, getNativeSQLQueryPlan, isClosed, list, scroll, setClosed`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.hibernate.engine.SessionImplementor
`getFactory, getNamedSQLQuery, isClosed, list, scroll`

Methods inherited from interface org.hibernate.transaction.TransactionFactory.Context
`getFactory, isClosed`

Method Detail

### getSession

    public Session getSession(EntityMode entityMode)

  Description copied from interface: `Session`
  Starts a new Session with the given entity mode in effect. This secondary Session inherits the connection, transaction, and other context information from the primary Session. It doesn't need to be flushed or closed by the developer.

  Specified by:
    `getSession` in interface `Session`
  Parameters:
    `entityMode` - The entity mode to use for the new session.
  Returns:
    The new session

### clear

    public void clear()

  Description copied from interface: `Session`
  Completely clear the session. Evict all loaded instances and cancel all pending saves, updates and deletions. Do not close open iterators or instances of `ScrollableResults`.

  Specified by:
    `clear` in interface `Session`

### getBatcher

    public Batcher getBatcher()

  Description copied from interface: `SessionImplementor`
  Get the prepared statement `Batcher` for this session

  Specified by:
    `getBatcher` in interface `SessionImplementor`

### getTimestamp

    public long getTimestamp()

  Description copied from interface: `SessionImplementor`
  System time before the start of the transaction

  Specified by:
    `getTimestamp` in interface `SessionImplementor`

### close

    public Connection close()
                     throws HibernateException

  Description copied from interface: `Session`
  End the session by releasing the JDBC connection and cleaning up. It is not strictly necessary to close the session but you must at least `Session.disconnect()` it.

  Specified by:
    `close` in interface `Session`
  Returns:
    the connection provided by the application or null.
  Throws:
    `HibernateException` - Indicates problems cleaning up.

### getConnectionReleaseMode

    public ConnectionReleaseMode getConnectionReleaseMode()

  Specified by:
    `getConnectionReleaseMode` in interface `JDBCContext.Context`

### isAutoCloseSessionEnabled

    public boolean isAutoCloseSessionEnabled()

  Specified by:
    `isAutoCloseSessionEnabled` in interface `JDBCContext.Context`

### isOpen

    public boolean isOpen()

  Description copied from interface: `Session`
  Check if the session is still open.

  Specified by:
    `isOpen` in interface `SessionImplementor`
  Specified by:
    `isOpen` in interface `Session`
  Returns:
    boolean

### isFlushModeNever

    public boolean isFlushModeNever()

  Specified by:
    `isFlushModeNever` in interface `TransactionFactory.Context`

### isFlushBeforeCompletionEnabled

    public boolean isFlushBeforeCompletionEnabled()

  Specified by:
    `isFlushBeforeCompletionEnabled` in interface `TransactionFactory.Context`

### managedFlush

    public void managedFlush()

  Specified by:
    `managedFlush` in interface `TransactionFactory.Context`

### getNonFlushedChanges

    public NonFlushedChanges getNonFlushedChanges()
                                           throws HibernateException

  Return changes to this session and its child sessions that have not been flushed yet.

  Specified by:
    `getNonFlushedChanges` in interface `SessionImplementor`
  Returns:
    The non-flushed changes.
  Throws:
    `HibernateException`

### applyNonFlushedChanges

    public void applyNonFlushedChanges(NonFlushedChanges nonFlushedChanges)
                                throws HibernateException

  Apply non-flushed changes from a different session to this session. It is assumed that this SessionImpl is "clean" (e.g., has no non-flushed changes, no cached entities, no cached collections, no queued actions). The specified NonFlushedChanges object cannot be bound to any session.

  Specified by:
    `applyNonFlushedChanges` in interface `SessionImplementor`
  Parameters:
    `nonFlushedChanges` - the non-flushed changes
  Throws:
    `HibernateException`

### shouldAutoClose

    public boolean shouldAutoClose()

  Specified by:
    `shouldAutoClose` in interface `TransactionFactory.Context`

### managedClose

    public void managedClose()

  Specified by:
    `managedClose` in interface `TransactionFactory.Context`

### connection

    public Connection connection()
                          throws HibernateException

  Description copied from interface: `Session`
  Get the JDBC connection of this Session.
  If the session is using aggressive collection release (as in a CMT environment), it is the application's responsibility to close the connection returned by this call. Otherwise, the application should not close the connection.

  Specified by:
    `connection` in interface `SessionImplementor`
  Specified by:
    `connection` in interface `Session`
  Returns:
    the JDBC connection in use by the `Session`
  Throws:
    `HibernateException` - if the `Session` is disconnected

### isConnected

    public boolean isConnected()

  Description copied from interface: `Session`
  Check if the session is currently connected.

  Specified by:
    `isConnected` in interface `SessionImplementor`
  Specified by:
    `isConnected` in interface `Session`
  Returns:
    boolean

### isTransactionInProgress

    public boolean isTransactionInProgress()

  Description copied from interface: `SessionImplementor`
  Does this `Session` have an active Hibernate transaction or is there a JTA transaction in progress?

  Specified by:
    `isTransactionInProgress` in interface `SessionImplementor`

### disconnect

    public Connection disconnect()
                          throws HibernateException

  Description copied from interface: `Session`
  Disconnect the `Session` from the current JDBC connection. If the connection was obtained by Hibernate close it and return it to the connection pool; otherwise, return it to the application.

  This is used by applications which supply JDBC connections to Hibernate and which require long-sessions (or long-conversations)

  Note that disconnect() called on a session where the connection was retrieved by Hibernate through its configured `ConnectionProvider` has no effect, provided `ConnectionReleaseMode.ON_CLOSE` is not in effect.

  Specified by:
    `disconnect` in interface `Session`
  Returns:
    the application-supplied connection or `null`
  Throws:
    `HibernateException`
  See Also:
    `Session.reconnect(Connection)`, `Session.reconnect()`

### reconnect

    public void reconnect()
                   throws HibernateException

  Description copied from interface: `Session`
  Obtain a new JDBC connection. This is used by applications which require long transactions and do not supply connections to the session.

  Specified by:
    `reconnect` in interface `Session`
  Throws:
    `HibernateException`
  See Also:
    `Session.disconnect()`

### reconnect

    public void reconnect(Connection conn)
                   throws HibernateException

  Description copied from interface: `Session`
  Reconnect to the given JDBC connection. This is used by applications which require long transactions and use application-supplied connections.

  Specified by:
    `reconnect` in interface `Session`
  Parameters:
    `conn` - a JDBC connection
  Throws:
    `HibernateException`
  See Also:
    `Session.disconnect()`

### beforeTransactionCompletion

    public void beforeTransactionCompletion(Transaction tx)

  Description copied from interface: `SessionImplementor`
  Notify the session that the transaction is about to complete

  Specified by:
    `beforeTransactionCompletion` in interface `SessionImplementor`
  Specified by:
    `beforeTransactionCompletion` in interface `JDBCContext.Context`

### setAutoClear

    public void setAutoClear(boolean enabled)

  Description copied from interface: `SessionImplementor`
  Enable/disable automatic cache clearing from after transaction completion (for EJB3)

  Specified by:
    `setAutoClear` in interface `SessionImplementor`

### afterOperation

    public void afterOperation(boolean success)

  Check if there is a Hibernate or JTA transaction in progress and, if there is not, flush if necessary, make sure the connection has been committed (if it is not in autocommit mode) and run the after completion processing

### afterTransactionCompletion

    public void afterTransactionCompletion(boolean success,
                                           Transaction tx)

  Description copied from interface: `SessionImplementor`
  Notify the session that the transaction completed, so we no longer own the old locks. (Also we should release cache softlocks.) May be called multiple times during the transaction completion process. Also called after an autocommit, in which case the second argument is null.

  Specified by:
    `afterTransactionCompletion` in interface `SessionImplementor`
  Specified by:
    `afterTransactionCompletion` in interface `JDBCContext.Context`

### getCurrentLockMode

    public LockMode getCurrentLockMode(Object object)
                                throws HibernateException

  Description copied from interface: `Session`
  Determine the current lock mode of the given object.

  Specified by:
    `getCurrentLockMode` in interface `Session`
  Parameters:
    `object` - a persistent instance
  Returns:
    the current lock mode
  Throws:
    `HibernateException`

### getEntityUsingInterceptor

    public Object getEntityUsingInterceptor(EntityKey key)
                                     throws HibernateException

  Description copied from interface: `SessionImplementor`
  Get the entity instance associated with the given `Key`, calling the Interceptor if necessary

  Specified by:
    `getEntityUsingInterceptor` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### saveOrUpdate

    public void saveOrUpdate(Object object)
                      throws HibernateException

  Description copied from interface: `Session`
  Either `Session.save(Object)` or `Session.update(Object)` the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking).

  This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Specified by:
    `saveOrUpdate` in interface `Session`
  Parameters:
    `object` - a transient or detached instance containing new or updated state
  Throws:
    `HibernateException`
  See Also:
    `Session.save(java.lang.Object)`, `Session.update(Object object)`

### saveOrUpdate

    public void saveOrUpdate(String entityName,
                             Object obj)
                      throws HibernateException

  Description copied from interface: `Session`
  Either `Session.save(String, Object)` or `Session.update(String, Object)` the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking).

  This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Specified by:
    `saveOrUpdate` in interface `Session`
    `obj` - a transient or detached instance containing new or updated state
  Throws:
    `HibernateException`
  See Also:
    `Session.save(String,Object)`, `Session.update(String,Object)`

### save

    public void save(Object obj,
                     Serializable id)
              throws HibernateException

  Description copied from interface: `Session`
  Persist the given transient instance, using the given identifier. This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Parameters:
    `obj` - a transient instance of a persistent class
    `id` - an unused valid identifier
  Throws:
    `HibernateException`

### save

    public Serializable save(Object obj)
                      throws HibernateException

  Description copied from interface: `Session`
  Persist the given transient instance, first assigning a generated identifier. (Or using the current value of the identifier property if the `assigned` generator is used.) This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Specified by:
    `save` in interface `Session`
  Parameters:
    `obj` - a transient instance of a persistent class
  Returns:
    the generated identifier
  Throws:
    `HibernateException`

### save

    public Serializable save(String entityName,
                             Object object)
                      throws HibernateException

  Description copied from interface: `Session`
  Persist the given transient instance, first assigning a generated identifier. (Or using the current value of the identifier property if the `assigned` generator is used.) This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Specified by:
    `save` in interface `Session`
    `object` - a transient instance of a persistent class
  Returns:
    the generated identifier
  Throws:
    `HibernateException`

### save

    public void save(String entityName,
                     Object object,
                     Serializable id)
              throws HibernateException

  Description copied from interface: `Session`
  Persist the given transient instance, using the given identifier. This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

    `object` - a transient instance of a persistent class
    `id` - an unused valid identifier
  Throws:
    `HibernateException`

### update

    public void update(Object obj)
                throws HibernateException

  Description copied from interface: `Session`
  Update the persistent instance with the identifier of the given detached instance. If there is a persistent instance with the same identifier, an exception is thrown. This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Specified by:
    `update` in interface `Session`
  Parameters:
    `obj` - a detached instance containing updated state
  Throws:
    `HibernateException`

### update

    public void update(Object obj,
                       Serializable id)
                throws HibernateException

  Description copied from interface: `Session`
  Update the persistent state associated with the given identifier. An exception is thrown if there is a persistent instance with the same identifier in the current session. This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Parameters:
    `obj` - a detached instance containing updated state
    `id` - identifier of persistent instance
  Throws:
    `HibernateException`

### update

    public void update(String entityName,
                       Object object)
                throws HibernateException

  Description copied from interface: `Session`
  Update the persistent instance with the identifier of the given detached instance. If there is a persistent instance with the same identifier, an exception is thrown. This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

  Specified by:
    `update` in interface `Session`
    `object` - a detached instance containing updated state
  Throws:
    `HibernateException`

### update

    public void update(String entityName,
                       Object object,
                       Serializable id)
                throws HibernateException

  Description copied from interface: `Session`
  Update the persistent state associated with the given identifier. An exception is thrown if there is a persistent instance with the same identifier in the current session. This operation cascades to associated instances if the association is mapped with `cascade="save-update"`.

    `object` - a detached instance containing updated state
    `id` - identifier of persistent instance
  Throws:
    `HibernateException`

### lock

    public void lock(String entityName,
                     Object object,
                     LockMode lockMode)
              throws HibernateException

  Description copied from interface: `Session`
  Obtain the specified lock level upon the given object. This may be used to perform a version check (`LockMode.OPTIMISTIC`), to upgrade to a pessimistic lock (`LockMode.PESSIMISTIC_WRITE`), or to simply reassociate a transient instance with a session (`LockMode.NONE`). This operation cascades to associated instances if the association is mapped with `cascade="lock"`.

  Specified by:
    `lock` in interface `Session`
    `object` - a persistent or transient instance
    `lockMode` - the lock level
  Throws:
    `HibernateException`

### buildLockRequest

    public Session.LockRequest buildLockRequest(LockOptions lockOptions)

  Description copied from interface: `Session`
  Build a LockRequest that specifies the LockMode, pessimistic lock timeout and lock scope. timeout and scope is ignored for optimistic locking. After building the LockRequest, call LockRequest.lock to perform the requested locking. Use: session.buildLockRequest(). setLockMode(LockMode.PESSIMISTIC_WRITE).setTimeOut(1000 * 60).lock(entity);

  Specified by:
    `buildLockRequest` in interface `Session`
  Parameters:
    `lockOptions` - contains the lock level
  Returns:
    a lockRequest that can be used to lock the passed object.

### lock

    public void lock(Object object,
                     LockMode lockMode)
              throws HibernateException

  Description copied from interface: `Session`
  Obtain the specified lock level upon the given object. This may be used to perform a version check (`LockMode.READ`), to upgrade to a pessimistic lock (`LockMode.PESSIMISTIC_WRITE`), or to simply reassociate a transient instance with a session (`LockMode.NONE`). This operation cascades to associated instances if the association is mapped with `cascade="lock"`.

  Specified by:
    `lock` in interface `Session`
  Parameters:
    `object` - a persistent or transient instance
    `lockMode` - the lock level
  Throws:
    `HibernateException`

### persist

    public void persist(String entityName,
                        Object object)
                 throws HibernateException

  Description copied from interface: `Session`
  Make a transient instance persistent. This operation cascades to associated instances if the association is mapped with `cascade="persist"`.
  The semantics of this method are defined by JSR-220.

  Specified by:
    `persist` in interface `Session`
    `object` - a transient instance to be made persistent
  Throws:
    `HibernateException`

### persist

    public void persist(Object object)
                 throws HibernateException

  Description copied from interface: `Session`
  Make a transient instance persistent. This operation cascades to associated instances if the association is mapped with `cascade="persist"`.
  The semantics of this method are defined by JSR-220.

  Specified by:
    `persist` in interface `Session`
  Parameters:
    `object` - a transient instance to be made persistent
  Throws:
    `HibernateException`

### persist

    public void persist(String entityName,
                        Object object,
                        Map copiedAlready)
                 throws HibernateException

  Description copied from interface: `EventSource`
  Cascade persist an entity instance

  Specified by:
    `persist` in interface `EventSource`
  Throws:
    `HibernateException`

### persistOnFlush

    public void persistOnFlush(String entityName,
                               Object object)
                        throws HibernateException

  Throws:
    `HibernateException`

### persistOnFlush

    public void persistOnFlush(Object object)
                        throws HibernateException

  Throws:
    `HibernateException`

### persistOnFlush

    public void persistOnFlush(String entityName,
                               Object object,
                               Map copiedAlready)
                        throws HibernateException

  Description copied from interface: `EventSource`
  Cascade persist an entity instance during the flush process

  Specified by:
    `persistOnFlush` in interface `EventSource`
  Throws:
    `HibernateException`

### merge

    public Object merge(String entityName,
                        Object object)
                 throws HibernateException

  Description copied from interface: `Session`
  Copy the state of the given object onto the persistent object with the same identifier. If there is no persistent instance currently associated with the session, it will be loaded. Return the persistent instance. If the given instance is unsaved, save a copy of and return it as a newly persistent instance. The given instance does not become associated with the session. This operation cascades to associated instances if the association is mapped with `cascade="merge"`.
  The semantics of this method are defined by JSR-220.

  Specified by:
    `merge` in interface `Session`
    `object` - a detached instance with state to be copied
  Returns:
    an updated persistent instance
  Throws:
    `HibernateException`

### merge

    public Object merge(Object object)
                 throws HibernateException

  Description copied from interface: `Session`
  Copy the state of the given object onto the persistent object with the same identifier. If there is no persistent instance currently associated with the session, it will be loaded. Return the persistent instance. If the given instance is unsaved, save a copy of and return it as a newly persistent instance. The given instance does not become associated with the session. This operation cascades to associated instances if the association is mapped with `cascade="merge"`.
  The semantics of this method are defined by JSR-220.

  Specified by:
    `merge` in interface `Session`
  Parameters:
    `object` - a detached instance with state to be copied
  Returns:
    an updated persistent instance
  Throws:
    `HibernateException`

### merge

    public void merge(String entityName,
                      Object object,
                      Map copiedAlready)
               throws HibernateException

  Description copied from interface: `EventSource`
  Cascade merge an entity instance

  Specified by:
    `merge` in interface `EventSource`
  Throws:
    `HibernateException`

### saveOrUpdateCopy

    public Object saveOrUpdateCopy(String entityName,
                                   Object object)
                            throws HibernateException

  Description copied from interface: `Session`
  Copy the state of the given object onto the persistent object with the same identifier. If there is no persistent instance currently associated with the session, it will be loaded. Return the persistent instance. If the given instance is unsaved or does not exist in the database, save it and return it as a newly persistent instance. Otherwise, the given instance does not become associated with the session.

    `object` - a transient instance with state to be copied
  Returns:
    an updated persistent instance
  Throws:
    `HibernateException`

### saveOrUpdateCopy

    public Object saveOrUpdateCopy(Object object)
                            throws HibernateException

  Description copied from interface: `Session`
  Copy the state of the given object onto the persistent object with the same identifier. If there is no persistent instance currently associated with the session, it will be loaded. Return the persistent instance. If the given instance is unsaved or does not exist in the database, save it and return it as a newly persistent instance. Otherwise, the given instance does not become associated with the session.

  Parameters:
    `object` - a transient instance with state to be copied
  Returns:
    an updated persistent instance
  Throws:
    `HibernateException`

### saveOrUpdateCopy

    public Object saveOrUpdateCopy(String entityName,
                                   Object object,
                                   Serializable id)
                            throws HibernateException

  Description copied from interface: `Session`
  Copy the state of the given object onto the persistent object with the given identifier. If there is no persistent instance currently associated with the session, it will be loaded. Return the persistent instance. If there is no database row with the given identifier, save the given instance and return it as a newly persistent instance. Otherwise, the given instance does not become associated with the session.

    `object` - a persistent or transient instance with state to be copied
    `id` - the identifier of the instance to copy to
  Returns:
    an updated persistent instance
  Throws:
    `HibernateException`

### saveOrUpdateCopy

    public Object saveOrUpdateCopy(Object object,
                                   Serializable id)
                            throws HibernateException

  Description copied from interface: `Session`
  Copy the state of the given object onto the persistent object with the given identifier. If there is no persistent instance currently associated with the session, it will be loaded. Return the persistent instance. If there is no database row with the given identifier, save the given instance and return it as a newly persistent instance. Otherwise, the given instance does not become associated with the session.

  Parameters:
    `object` - a persistent or transient instance with state to be copied
    `id` - the identifier of the instance to copy to
  Returns:
    an updated persistent instance
  Throws:
    `HibernateException`

### saveOrUpdateCopy

    public void saveOrUpdateCopy(String entityName,
                                 Object object,
                                 Map copiedAlready)
                          throws HibernateException

  Description copied from interface: `EventSource`
  Cascade copy an entity instance

  Specified by:
    `saveOrUpdateCopy` in interface `EventSource`
  Throws:
    `HibernateException`

### delete

    public void delete(Object object)
                throws HibernateException

  Delete a persistent object

  Specified by:
    `delete` in interface `Session`
  Parameters:
    `object` - the instance to be removed
  Throws:
    `HibernateException`

### delete

    public void delete(String entityName,
                       Object object)
                throws HibernateException

  Delete a persistent object (by explicit entity name)

  Specified by:
    `delete` in interface `Session`
  Parameters:
    `entityName` - The entity name for the instance to be removed.
    `object` - the instance to be removed
  Throws:
    `HibernateException`

### delete

    public void delete(String entityName,
                       Object object,
                       boolean isCascadeDeleteEnabled,
                       Set transientEntities)
                throws HibernateException

  Delete a persistent object

  Specified by:
    `delete` in interface `EventSource`
  Throws:
    `HibernateException`

### load

    public void load(Object object,
                     Serializable id)
              throws HibernateException

  Description copied from interface: `Session`
  Read the persistent state associated with the given identifier into the given transient instance.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `object` - an "empty" instance of the persistent class
    `id` - a valid identifier of an existing persistent instance of the class
  Throws:
    `HibernateException`

### load

    public Object load(Class entityClass,
                       Serializable id)
                throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists. This method might return a proxied instance that is initialized on-demand, when a non-identifier method is accessed.
  You should not use this method to determine if an instance exists (use `get()` instead). Use this only to retrieve an instance that you assume exists, where non-existence would be an actual error.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `entityClass` - a persistent class
    `id` - a valid identifier of an existing persistent instance of the class
  Returns:
    the persistent instance or proxy
  Throws:
    `HibernateException`

### load

    public Object load(String entityName,
                       Serializable id)
                throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, assuming that the instance exists. This method might return a proxied instance that is initialized on-demand, when a non-identifier method is accessed.
  You should not use this method to determine if an instance exists (use `get()` instead). Use this only to retrieve an instance that you assume exists, where non-existence would be an actual error.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `entityName` - a persistent class
    `id` - a valid identifier of an existing persistent instance of the class
  Returns:
    the persistent instance or proxy
  Throws:
    `HibernateException`

### get

    public Object get(Class entityClass,
                      Serializable id)
               throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance. (If the instance is already associated with the session, return that instance. This method never returns an uninitialized instance.)

  Specified by:
    `get` in interface `Session`
  Parameters:
    `entityClass` - a persistent class
    `id` - an identifier
  Returns:
    a persistent instance or null
  Throws:
    `HibernateException`

### get

    public Object get(String entityName,
                      Serializable id)
               throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given named entity with the given identifier, or null if there is no such persistent instance. (If the instance is already associated with the session, return that instance. This method never returns an uninitialized instance.)

  Specified by:
    `get` in interface `Session`
  Parameters:
    `entityName` - the entity name
    `id` - an identifier
  Returns:
    a persistent instance or null
  Throws:
    `HibernateException`

### immediateLoad

    public Object immediateLoad(String entityName,
                                Serializable id)
                         throws HibernateException

  Load the data for the object with the specified id into a newly created object. This is only called when lazily initializing a proxy. Do NOT return a proxy.

  Specified by:
    `immediateLoad` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### internalLoad

    public Object internalLoad(String entityName,
                               Serializable id,
                               boolean eager,
                               boolean nullable)
                        throws HibernateException

  Description copied from interface: `SessionImplementor`
  Load an instance without checking if it was deleted. When `nullable` is disabled this method may create a new proxy or return an existing proxy; if it does not exist, throw an exception. When `nullable` is enabled, the method does not create new proxies (but might return an existing proxy); if it does not exist, return `null`. When `eager` is enabled, the object is eagerly fetched

  Specified by:
    `internalLoad` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### load

    public Object load(Class entityClass,
                       Serializable id,
                       LockMode lockMode)
                throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `entityClass` - a persistent class
    `id` - a valid identifier of an existing persistent instance of the class
    `lockMode` - the lock level
  Returns:
    the persistent instance or proxy
  Throws:
    `HibernateException`

### load

    public Object load(Class entityClass,
                       Serializable id,
                       LockOptions lockOptions)
                throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `entityClass` - a persistent class
    `id` - a valid identifier of an existing persistent instance of the class
    `lockOptions` - contains the lock level
  Returns:
    the persistent instance or proxy
  Throws:
    `HibernateException`

### load

    public Object load(String entityName,
                       Serializable id,
                       LockMode lockMode)
                throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `entityName` - a persistent class
    `id` - a valid identifier of an existing persistent instance of the class
    `lockMode` - the lock level
  Returns:
    the persistent instance or proxy
  Throws:
    `HibernateException`

### load

    public Object load(String entityName,
                       Serializable id,
                       LockOptions lockOptions)
                throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, obtaining the specified lock mode, assuming the instance exists.

  Specified by:
    `load` in interface `Session`
  Parameters:
    `entityName` - a persistent class
    `id` - a valid identifier of an existing persistent instance of the class
    `lockOptions` - contains the lock level
  Returns:
    the persistent instance or proxy
  Throws:
    `HibernateException`

### get

    public Object get(Class entityClass,
                      Serializable id,
                      LockMode lockMode)
               throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance. (If the instance is already associated with the session, return that instance. This method never returns an uninitialized instance.) Obtain the specified lock mode if the instance exists.

  Specified by:
    `get` in interface `Session`
  Parameters:
    `entityClass` - a persistent class
    `id` - an identifier
    `lockMode` - the lock mode
  Returns:
    a persistent instance or null
  Throws:
    `HibernateException`

### get

    public Object get(Class entityClass,
                      Serializable id,
                      LockOptions lockOptions)
               throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance. (If the instance is already associated with the session, return that instance. This method never returns an uninitialized instance.) Obtain the specified lock mode if the instance exists.

  Specified by:
    `get` in interface `Session`
  Parameters:
    `entityClass` - a persistent class
    `id` - an identifier
    `lockOptions` - the lock mode
  Returns:
    a persistent instance or null
  Throws:
    `HibernateException`

### get

    public Object get(String entityName,
                      Serializable id,
                      LockMode lockMode)
               throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance. (If the instance is already associated with the session, return that instance. This method never returns an uninitialized instance.) Obtain the specified lock mode if the instance exists.

  Specified by:
    `get` in interface `Session`
  Parameters:
    `entityName` - the entity name
    `id` - an identifier
    `lockMode` - the lock mode
  Returns:
    a persistent instance or null
  Throws:
    `HibernateException`

### get

    public Object get(String entityName,
                      Serializable id,
                      LockOptions lockOptions)
               throws HibernateException

  Description copied from interface: `Session`
  Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance. (If the instance is already associated with the session, return that instance. This method never returns an uninitialized instance.) Obtain the specified lock mode if the instance exists.

  Specified by:
    `get` in interface `Session`
  Parameters:
    `entityName` - the entity name
    `id` - an identifier
    `lockOptions` - contains the lock mode
  Returns:
    a persistent instance or null
  Throws:
    `HibernateException`

### refresh

    public void refresh(Object object)
                 throws HibernateException

  Description copied from interface: `Session`
  Re-read the state of the given instance from the underlying database. It is inadvisable to use this to implement long-running sessions that span many business tasks. This method is, however, useful in certain special circumstances. For example
  - where a database trigger alters the object state upon insert or update
  - after executing direct SQL (eg. a mass update) in the same session
  - after inserting a `Blob` or `Clob`

  Specified by:
    `refresh` in interface `Session`
  Parameters:
    `object` - a persistent or detached instance
  Throws:
    `HibernateException`

### refresh

    public void refresh(Object object,
                        LockMode lockMode)
                 throws HibernateException

  Description copied from interface: `Session`
  Re-read the state of the given instance from the underlying database, with the given `LockMode`. It is inadvisable to use this to implement long-running sessions that span many business tasks. This method is, however, useful in certain special circumstances.

  Specified by:
    `refresh` in interface `Session`
  Parameters:
    `object` - a persistent or detached instance
    `lockMode` - the lock mode to use
  Throws:
    `HibernateException`

### refresh

    public void refresh(Object object,
                        LockOptions lockOptions)
                 throws HibernateException

  Description copied from interface: `Session`
  Re-read the state of the given instance from the underlying database, with the given `LockMode`. It is inadvisable to use this to implement long-running sessions that span many business tasks. This method is, however, useful in certain special circumstances.

  Specified by:
    `refresh` in interface `Session`
  Parameters:
    `object` - a persistent or detached instance
    `lockOptions` - contains the lock mode to use
  Throws:
    `HibernateException`

### refresh

    public void refresh(Object object,
                        Map refreshedAlready)
                 throws HibernateException

  Description copied from interface: `EventSource`
  Cascade refesh an entity instance

  Specified by:
    `refresh` in interface `EventSource`
  Throws:
    `HibernateException`

### replicate

    public void replicate(Object obj,
                          ReplicationMode replicationMode)
                   throws HibernateException

  Description copied from interface: `Session`
  Persist the state of the given detached instance, reusing the current identifier value. This operation cascades to associated instances if the association is mapped with `cascade="replicate"`.

  Specified by:
    `replicate` in interface `Session`
  Parameters:
    `obj` - a detached instance of a persistent class
  Throws:
    `HibernateException`

### replicate

    public void replicate(String entityName,
                          Object obj,
                          ReplicationMode replicationMode)
                   throws HibernateException

  Description copied from interface: `Session`
  Persist the state of the given detached instance, reusing the current identifier value. This operation cascades to associated instances if the association is mapped with `cascade="replicate"`.

  Specified by:
    `replicate` in interface `Session`
    `obj` - a detached instance of a persistent class
  Throws:
    `HibernateException`

### evict

    public void evict(Object object)
               throws HibernateException

  remove any hard references to the entity that are held by the infrastructure (references held by application or other persistant instances are okay)

  Specified by:
    `evict` in interface `Session`
  Parameters:
    `object` - a persistent instance
  Throws:
    `HibernateException`

### autoFlushIfRequired

    protected boolean autoFlushIfRequired(Set querySpaces)
                                   throws HibernateException

  detect in-memory changes, determine if the changes are to tables named in the query and, if so, complete execution the flush

  Throws:
    `HibernateException`

### isDirty

    public boolean isDirty()
                    throws HibernateException

  Description copied from interface: `Session`
  Does this session contain any changes which must be synchronized with the database? In other words, would any DML operations be executed if we flushed this session?

  Specified by:
    `isDirty` in interface `Session`
  Returns:
    True if the session contains pending changes; false otherwise.
  Throws:
    `HibernateException` - could not perform dirtying checking

### flush

    public void flush()
               throws HibernateException

  Description copied from interface: `Session`
  Force this session to flush. Must be called at the end of a unit of work, before committing the transaction and closing the session (depending on `flush-mode`, `Transaction.commit()` calls this method).

  Flushing is the process of synchronizing the underlying persistent store with persistable state held in memory.

  Specified by:
    `flush` in interface `SessionImplementor`
  Specified by:
    `flush` in interface `Session`
  Throws:
    `HibernateException` - Indicates problems flushing the session or talking to the database.

### forceFlush

    public void forceFlush(EntityEntry entityEntry)
                    throws HibernateException

  Description copied from interface: `EventSource`
  Force an immediate flush

  Specified by:
    `forceFlush` in interface `EventSource`
  Throws:
    `HibernateException`

### find

    public List find(String query)
              throws HibernateException

  Retrieve a list of persistent objects using a hibernate query

  Parameters:
    `query` - a query expressed in Hibernate's query language
  Returns:
    a distinct list of instances (or arrays of instances)
  Throws:
    `HibernateException`

### find

    public List find(String query,
                     Object value,
                     Type type)
              throws HibernateException

  Description copied from interface: `Session`
  Execute a query with bind parameters, binding a value to a "?" parameter in the query string.

  Parameters:
    `query` - the query string
    `value` - a value to be bound to a "?" placeholder (JDBC IN parameter).
    `type` - the Hibernate type of the value
  Returns:
    a distinct list of instances (or arrays of instances)
  Throws:
    `HibernateException`
  See Also:
    `for access to `Type` instances`

### find

    public List find(String query,
                     Object[] values,
                     Type[] types)
              throws HibernateException

  Description copied from interface: `Session`
  Execute a query with bind parameters, binding an array of values to "?" parameters in the query string.

  Parameters:
    `query` - the query string
    `values` - an array of values to be bound to the "?" placeholders (JDBC IN parameters).
    `types` - an array of Hibernate types of the values
  Returns:
    a distinct list of instances
  Throws:
    `HibernateException`
  See Also:
    `for access to `Type` instances`

### list

    public List list(String query,
                     QueryParameters queryParameters)
              throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute a `find()` query

  Specified by:
    `list` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### executeUpdate

    public int executeUpdate(String query,
                             QueryParameters queryParameters)
                      throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute a HQL update or delete query

  Specified by:
    `executeUpdate` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### executeNativeUpdate

    public int executeNativeUpdate(NativeSQLQuerySpecification nativeQuerySpecification,
                                   QueryParameters queryParameters)
                            throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute a native SQL update or delete query

  Specified by:
    `executeNativeUpdate` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### iterate

    public Iterator iterate(String query)
                     throws HibernateException

  Description copied from interface: `Session`
  Execute a query and return the results in an iterator. If the query has multiple return values, values will be returned in an array of type `Object[].`
  Entities returned as results are initialized on demand. The first SQL query returns identifiers only. So `iterate()` is usually a less efficient way to retrieve objects than `find()`.

  Parameters:
    `query` - the query string
  Returns:
    an iterator
  Throws:
    `HibernateException`

### iterate

    public Iterator iterate(String query,
                            Object value,
                            Type type)
                     throws HibernateException

  Description copied from interface: `Session`
  Execute a query and return the results in an iterator. Write the given value to "?" in the query string. If the query has multiple return values, values will be returned in an array of type `Object[]`.
  Entities returned as results are initialized on demand. The first SQL query returns identifiers only. So `iterate()` is usually a less efficient way to retrieve objects than `find()`.

  Parameters:
    `query` - the query string
    `value` - a value to be witten to a "?" placeholder in the query string
    `type` - the hibernate type of value
  Returns:
    an iterator
  Throws:
    `HibernateException`

### iterate

    public Iterator iterate(String query,
                            Object[] values,
                            Type[] types)
                     throws HibernateException

  Description copied from interface: `Session`
  Execute a query and return the results in an iterator. Write the given values to "?" in the query string. If the query has multiple return values, values will be returned in an array of type `Object[]`.
  Entities returned as results are initialized on demand. The first SQL query returns identifiers only. So `iterate()` is usually a less efficient way to retrieve objects than `find()`.

  Parameters:
    `query` - the query string
    `values` - a list of values to be written to "?" placeholders in the query
    `types` - a list of Hibernate types of the values
  Returns:
    an iterator
  Throws:
    `HibernateException`

### iterate

    public Iterator iterate(String query,
                            QueryParameters queryParameters)
                     throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute an `iterate()` query

  Specified by:
    `iterate` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### scroll

    public ScrollableResults scroll(String query,
                                    QueryParameters queryParameters)
                             throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute a `scroll()` query

  Specified by:
    `scroll` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### delete

    public int delete(String query)
               throws HibernateException

  Description copied from interface: `Session`
  Delete all objects returned by the query. Return the number of objects deleted.

  Note that this is very different from the delete-statement support added in HQL since 3.1. The functionality here is to actually peform the query and then iterate the results calling `Session.delete(Object)` individually.

  Parameters:
    `query` - the query string
  Returns:
    the number of instances deleted
  Throws:
    `HibernateException`

### delete

    public int delete(String query,
                      Object value,
                      Type type)
               throws HibernateException

  Description copied from interface: `Session`
  Delete all objects returned by the query. Return the number of objects deleted.

  Note that this is very different from the delete-statement support added in HQL since 3.1. The functionality here is to actually peform the query and then iterate the results calling `Session.delete(Object)` individually.

  Parameters:
    `query` - the query string
    `value` - a value to be witten to a "?" placeholder in the query string.
    `type` - the hibernate type of value.
  Returns:
    the number of instances deleted
  Throws:
    `HibernateException`

### delete

    public int delete(String query,
                      Object[] values,
                      Type[] types)
               throws HibernateException

  Description copied from interface: `Session`
  Delete all objects returned by the query. Return the number of objects deleted.

  Note that this is very different from the delete-statement support added in HQL since 3.1. The functionality here is to actually peform the query and then iterate the results calling `Session.delete(Object)` individually.

  Parameters:
    `query` - the query string
    `values` - a list of values to be written to "?" placeholders in the query.
    `types` - a list of Hibernate types of the values
  Returns:
    the number of instances deleted
  Throws:
    `HibernateException`

### createFilter

    public Query createFilter(Object collection,
                              String queryString)

  Description copied from interface: `Session`
  Create a new instance of `Query` for the given collection and filter string.

  Specified by:
    `createFilter` in interface `Session`
  Parameters:
    `collection` - a persistent collection
    `queryString` - a Hibernate query
  Returns:
    Query

### getNamedQuery

    public Query getNamedQuery(String queryName)
                        throws MappingException

  Description copied from interface: `SessionImplementor`
  Get a Query instance for a named query or named native SQL query

  Specified by:
    `getNamedQuery` in interface `SessionImplementor`
  Specified by:
    `getNamedQuery` in interface `Session`
  Overrides:
    `getNamedQuery` in class `AbstractSessionImpl`
  Parameters:
    `queryName` - the name of a query defined externally
  Returns:
    Query
  Throws:
    `MappingException`

### instantiate

    public Object instantiate(String entityName,
                              Serializable id)
                       throws HibernateException

  Description copied from interface: `SessionImplementor`
  Instantiate the entity class, initializing with the given identifier

  Specified by:
    `instantiate` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### instantiate

    public Object instantiate(EntityPersister persister,
                              Serializable id)
                       throws HibernateException

  give the interceptor an opportunity to override the default instantiation

  Specified by:
    `instantiate` in interface `EventSource`
  Throws:
    `HibernateException`

### getEntityMode

    public EntityMode getEntityMode()

  Description copied from interface: `Session`
  Retrieve the entity mode in effect for this session.

  Specified by:
    `getEntityMode` in interface `SessionImplementor`
  Specified by:
    `getEntityMode` in interface `Session`
  Returns:
    The entity mode for this session.

### setFlushMode

    public void setFlushMode(FlushMode flushMode)

  Description copied from interface: `Session`
  Set the flush mode for this session.

  The flush mode determines the points at which the session is flushed. Flushing is the process of synchronizing the underlying persistent store with persistable state held in memory.

  For a logically "read only" session, it is reasonable to set the session's flush mode to `FlushMode.MANUAL` at the start of the session (in order to achieve some extra performance).

  Specified by:
    `setFlushMode` in interface `SessionImplementor`
  Specified by:
    `setFlushMode` in interface `Session`
  Parameters:
    `flushMode` - the new flush mode
  See Also:
    `FlushMode`

### getFlushMode

    public FlushMode getFlushMode()

  Description copied from interface: `Session`
  Get the current flush mode for this session.

  Specified by:
    `getFlushMode` in interface `SessionImplementor`
  Specified by:
    `getFlushMode` in interface `Session`
  Returns:
    The flush mode

### getCacheMode

    public CacheMode getCacheMode()

  Description copied from interface: `Session`
  Get the current cache mode.

  Specified by:
    `getCacheMode` in interface `SessionImplementor`
  Specified by:
    `getCacheMode` in interface `Session`
  Returns:
    The current cache mode.

### setCacheMode

    public void setCacheMode(CacheMode cacheMode)

  Description copied from interface: `Session`
  Set the cache mode.

  Cache mode determines the manner in which this session can interact with the second level cache.

  Specified by:
    `setCacheMode` in interface `SessionImplementor`
  Specified by:
    `setCacheMode` in interface `Session`
  Parameters:
    `cacheMode` - The new cache mode.

### getTransaction

    public Transaction getTransaction()
                               throws HibernateException

  Description copied from interface: `Session`
  Get the `Transaction` instance associated with this session. The class of the returned `Transaction` object is determined by the property `hibernate.transaction_factory`.

  Specified by:
    `getTransaction` in interface `Session`
  Returns:
    a Transaction instance
  Throws:
    `HibernateException`
  See Also:
    `Transaction`

### beginTransaction

    public Transaction beginTransaction()
                                 throws HibernateException

  Description copied from interface: `Session`
  Begin a unit of work and return the associated `Transaction` object. If a new underlying transaction is required, begin the transaction. Otherwise continue the new work in the context of the existing underlying transaction. The class of the returned `Transaction` object is determined by the property `hibernate.transaction_factory`.

  Specified by:
    `beginTransaction` in interface `Session`
  Returns:
    a Transaction instance
  Throws:
    `HibernateException`
  See Also:
    `Transaction`

### afterTransactionBegin

    public void afterTransactionBegin(Transaction tx)

  Description copied from interface: `JDBCContext.Context`
  We cannot rely upon this method being called! It is only called if we are using Hibernate Transaction API.

  Specified by:
    `afterTransactionBegin` in interface `JDBCContext.Context`

### getEntityPersister

    public EntityPersister getEntityPersister(String entityName,
                                              Object object)

  Description copied from interface: `SessionImplementor`
  Get the `EntityPersister` for any instance

  Specified by:
    `getEntityPersister` in interface `SessionImplementor`
  Parameters:
    `entityName` - optional entity name
    `object` - the entity instance

### getIdentifier

    public Serializable getIdentifier(Object object)
                               throws HibernateException

  Description copied from interface: `Session`
  Return the identifier value of the given entity as associated with this session. An exception is thrown if the given entity instance is transient or detached in relation to this session.

  Specified by:
    `getIdentifier` in interface `Session`
  Parameters:
    `object` - a persistent instance
  Returns:
    the identifier
  Throws:
    `TransientObjectException` - if the instance is transient or associated with a different session
    `HibernateException`

### getContextEntityIdentifier

    public Serializable getContextEntityIdentifier(Object object)

  Get the id value for an object that is actually associated with the session. This is a bit stricter than getEntityIdentifierIfNotUnsaved().

  Specified by:
    `getContextEntityIdentifier` in interface `SessionImplementor`

### filter

    public Collection filter(Object collection,
                             String filter)
                      throws HibernateException

  Description copied from interface: `Session`
  Apply a filter to a persistent collection. A filter is a Hibernate query that may refer to `this`, the collection element. Filters allow efficient access to very large lazy collections. (Executing the filter does not initialize the collection.)

  Parameters:
    `collection` - a persistent collection to filter
    `filter` - a filter query string
  Returns:
    Collection the resulting collection
  Throws:
    `HibernateException`

### filter

    public Collection filter(Object collection,
                             String filter,
                             Object value,
                             Type type)
                      throws HibernateException

  Description copied from interface: `Session`
  Apply a filter to a persistent collection. A filter is a Hibernate query that may refer to `this`, the collection element.

  Parameters:
    `collection` - a persistent collection to filter
    `filter` - a filter query string
    `value` - a value to be witten to a "?" placeholder in the query string
    `type` - the hibernate type of value
  Returns:
    Collection
  Throws:
    `HibernateException`

### filter

    public Collection filter(Object collection,
                             String filter,
                             Object[] values,
                             Type[] types)
                      throws HibernateException

  Description copied from interface: `Session`
  Apply a filter to a persistent collection. Bind the given parameters to "?" placeholders. A filter is a Hibernate query that may refer to `this`, the collection element.

  Parameters:
    `collection` - a persistent collection to filter
    `filter` - a filter query string
    `values` - a list of values to be written to "?" placeholders in the query
    `types` - a list of Hibernate types of the values
  Returns:
    Collection
  Throws:
    `HibernateException`

### listFilter

    public List listFilter(Object collection,
                           String filter,
                           QueryParameters queryParameters)
                    throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute a filter

  Specified by:
    `listFilter` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### iterateFilter

    public Iterator iterateFilter(Object collection,
                                  String filter,
                                  QueryParameters queryParameters)
                           throws HibernateException

  Description copied from interface: `SessionImplementor`
  Iterate a filter

  Specified by:
    `iterateFilter` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### createCriteria

    public Criteria createCriteria(Class persistentClass,
                                   String alias)

  Description copied from interface: `Session`
  Create a new `Criteria` instance, for the given entity class, or a superclass of an entity class, with the given alias.

  Specified by:
    `createCriteria` in interface `Session`
  Parameters:
    `persistentClass` - a class, which is persistent, or has persistent subclasses
  Returns:
    Criteria

### createCriteria

    public Criteria createCriteria(String entityName,
                                   String alias)

  Description copied from interface: `Session`
  Create a new `Criteria` instance, for the given entity name, with the given alias.

  Specified by:
    `createCriteria` in interface `Session`
  Returns:
    Criteria

### createCriteria

    public Criteria createCriteria(Class persistentClass)

  Description copied from interface: `Session`
  Create a new `Criteria` instance, for the given entity class, or a superclass of an entity class.

  Specified by:
    `createCriteria` in interface `Session`
  Parameters:
    `persistentClass` - a class, which is persistent, or has persistent subclasses
  Returns:
    Criteria

### createCriteria

    public Criteria createCriteria(String entityName)

  Description copied from interface: `Session`
  Create a new `Criteria` instance, for the given entity name.

  Specified by:
    `createCriteria` in interface `Session`
  Returns:
    Criteria

### scroll

    public ScrollableResults scroll(CriteriaImpl criteria,
                                    ScrollMode scrollMode)

  Description copied from interface: `SessionImplementor`
  Execute a criteria query

  Specified by:
    `scroll` in interface `SessionImplementor`

### list

    public List list(CriteriaImpl criteria)
              throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute a criteria query

  Specified by:
    `list` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### contains

    public boolean contains(Object object)

  Description copied from interface: `Session`
  Check if this instance is associated with this `Session`.

  Specified by:
    `contains` in interface `Session`
  Parameters:
    `object` - an instance of a persistent class
  Returns:
    true if the given instance is associated with this `Session`

### createQuery

    public Query createQuery(String queryString)

  Description copied from interface: `Session`
  Create a new instance of `Query` for the given HQL query string.

  Specified by:
    `createQuery` in interface `Session`
  Overrides:
    `createQuery` in class `AbstractSessionImpl`
  Parameters:
    `queryString` - a HQL query
  Returns:
    Query

### createSQLQuery

    public SQLQuery createSQLQuery(String sql)

  Description copied from interface: `Session`
  Create a new instance of `SQLQuery` for the given SQL query string.

  Specified by:
    `createSQLQuery` in interface `Session`
  Overrides:
    `createSQLQuery` in class `AbstractSessionImpl`
  Parameters:
    `sql` - a SQL query
  Returns:
    SQLQuery

### createSQLQuery

    public Query createSQLQuery(String sql,
                                String returnAlias,
                                Class returnClass)

  Description copied from interface: `Session`
  Create a new instance of `Query` for the given SQL string.

  Returned instances should all be `SQLQuery`.

  Parameters:
    `sql` - a query expressed in SQL
    `returnAlias` - a table alias that appears inside `{}` in the SQL string
    `returnClass` - the returned persistent class

### createSQLQuery

    public Query createSQLQuery(String sql,
                                String[] returnAliases,
                                Class[] returnClasses)

  Description copied from interface: `Session`
  Create a new instance of `Query` for the given SQL string.

  Returned instances should all be `SQLQuery`.

  Parameters:
    `sql` - a query expressed in SQL
    `returnAliases` - an array of table aliases that appear inside `{}` in the SQL string
    `returnClasses` - the returned persistent classes

### scrollCustomQuery

    public ScrollableResults scrollCustomQuery(CustomQuery customQuery,
                                               QueryParameters queryParameters)
                                        throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute an SQL Query

  Specified by:
    `scrollCustomQuery` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### listCustomQuery

    public List listCustomQuery(CustomQuery customQuery,
                                QueryParameters queryParameters)
                         throws HibernateException

  Description copied from interface: `SessionImplementor`
  Execute an SQL Query

  Specified by:
    `listCustomQuery` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### getSessionFactory

    public SessionFactory getSessionFactory()

  Description copied from interface: `Session`
  Get the session factory which created this session.

  Specified by:
    `getSessionFactory` in interface `Session`
  Returns:
    The session factory.
  See Also:
    `SessionFactory`

### initializeCollection

    public void initializeCollection(PersistentCollection collection,
                                     boolean writing)
                              throws HibernateException

  Description copied from interface: `SessionImplementor`
  Initialize the collection (if not already initialized)

  Specified by:
    `initializeCollection` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### bestGuessEntityName

    public String bestGuessEntityName(Object object)

  Description copied from interface: `SessionImplementor`
  The best guess entity name for an entity not in an association

  Specified by:
    `bestGuessEntityName` in interface `SessionImplementor`

### getEntityName

    public String getEntityName(Object object)

  Description copied from interface: `Session`
  Return the entity name for a persistent entity

  Specified by:
    `getEntityName` in interface `Session`
  Parameters:
    `object` - a persistent entity
  Returns:
    the entity name

### guessEntityName

    public String guessEntityName(Object object)
                           throws HibernateException

  Description copied from interface: `SessionImplementor`
  The guessed entity name for an entity not in an association

  Specified by:
    `guessEntityName` in interface `SessionImplementor`
  Throws:
    `HibernateException`

### cancelQuery

    public void cancelQuery()
                     throws HibernateException

  Description copied from interface: `Session`
  Cancel the execution of the current query.

  This is the sole method on session which may be safely called from another thread.

  Specified by:
    `cancelQuery` in interface `Session`
  Throws:
    `HibernateException` - There was a problem canceling the query

### getInterceptor

    public Interceptor getInterceptor()

  Description copied from interface: `SessionImplementor`
  Retrieves the interceptor currently in use by this event source.

  Specified by:
    `getInterceptor` in interface `SessionImplementor`
  Returns:
    The interceptor.

### getDontFlushFromFind

    public int getDontFlushFromFind()

  Specified by:
    `getDontFlushFromFind` in interface `SessionImplementor`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### getListeners

    public EventListeners getListeners()

  Description copied from interface: `SessionImplementor`
  Retrieves the configured event listeners from this event source.

  Specified by:
    `getListeners` in interface `SessionImplementor`
  Returns:
    The configured event listeners.

### getActionQueue

    public ActionQueue getActionQueue()

  Description copied from interface: `EventSource`
  Get the ActionQueue for this session

  Specified by:
    `getActionQueue` in interface `EventSource`

### getPersistenceContext

    public PersistenceContext getPersistenceContext()

  Description copied from interface: `SessionImplementor`
  Get the persistence context for this session

  Specified by:
    `getPersistenceContext` in interface `SessionImplementor`

### getStatistics

    public SessionStatistics getStatistics()

  Description copied from interface: `Session`
  Get the statistics for this session.

  Specified by:
    `getStatistics` in interface `Session`

### isEventSource

    public boolean isEventSource()

  Specified by:
    `isEventSource` in interface `SessionImplementor`

### isDefaultReadOnly

    public boolean isDefaultReadOnly()

  Will entities and proxies that are loaded into this session be made read-only by default? To determine the read-only/modifiable setting for a particular entity or proxy:

  Specified by:
    `isDefaultReadOnly` in interface `Session`
  Returns:
    true, loaded entities/proxies will be made read-only by default; false, loaded entities/proxies will be made modifiable by default.
  See Also:
    `Session.isReadOnly(Object)`

### setDefaultReadOnly

    public void setDefaultReadOnly(boolean defaultReadOnly)

  Change the default for entities and proxies loaded into this session from modifiable to read-only mode, or from modifiable to read-only mode. Read-only entities are not dirty-checked and snapshots of persistent state are not maintained. Read-only entities can be modified, but changes are not persisted. When a proxy is initialized, the loaded entity will have the same read-only/modifiable setting as the uninitialized proxy has, regardless of the session's current setting. To change the read-only/modifiable setting for a particular entity or proxy that is already in this session:

  Specified by:
    `setDefaultReadOnly` in interface `Session`
  Parameters:
    `defaultReadOnly` - true, the default for loaded entities/proxies is read-only; false, the default for loaded entities/proxies is modifiable
  See Also:
    `To override this session's read-only/modifiable setting for entities and proxies loaded by a Query:`, `Query.setReadOnly(boolean)`

### isReadOnly

    public boolean isReadOnly(Object entityOrProxy)

  Description copied from interface: `Session`
  Is the specified entity or proxy read-only? To get the default read-only/modifiable setting used for entities and proxies that are loaded into the session:

  Specified by:
    `isReadOnly` in interface `Session`
  Parameters:
    `entityOrProxy` - an entity or HibernateProxy
  Returns:
    true, the entity or proxy is read-only; false, the entity or proxy is modifiable.
  See Also:
    `Session.isDefaultReadOnly()`

### setReadOnly

    public void setReadOnly(Object entity,
                            boolean readOnly)

  Description copied from interface: `Session`
  Set an unmodified persistent object to read-only mode, or a read-only object to modifiable mode. In read-only mode, no snapshot is maintained, the instance is never dirty checked, and changes are not persisted. If the entity or proxy already has the specified read-only/modifiable setting, then this method does nothing. To set the default read-only/modifiable setting used for entities and proxies that are loaded into the session:

  Specified by:
    `setReadOnly` in interface `Session`
  Parameters:
    `entity` - an entity or HibernateProxy
    `readOnly` - if true, the entity or proxy is made read-only; if false, the entity or proxy is made modifiable.
  See Also:
    `To override this session's read-only/modifiable setting for entities and proxies loaded by a Query:`, `Query.setReadOnly(boolean)`

### doWork

    public void doWork(Work work)
                throws HibernateException

  Description copied from interface: `Session`
  Controller for allowing users to perform JDBC related work using the Connection managed by this Session.

  Specified by:
    `doWork` in interface `Session`
  Parameters:
    `work` - The work to be performed.
  Throws:
    `HibernateException` - Generally indicates wrapped `SQLException`

### afterScrollOperation

    public void afterScrollOperation()

  Specified by:
    `afterScrollOperation` in interface `SessionImplementor`

### getJDBCContext

    public JDBCContext getJDBCContext()

  Specified by:
    `getJDBCContext` in interface `SessionImplementor`

### getLoadQueryInfluencers

    public LoadQueryInfluencers getLoadQueryInfluencers()

  Description copied from interface: `SessionImplementor`
  Get the load query influencers associated with this session.

  Specified by:
    `getLoadQueryInfluencers` in interface `SessionImplementor`
  Returns:
    the load query influencers associated with this session; should never be null.

### getEnabledFilter

    public Filter getEnabledFilter(String filterName)

  Retrieve a currently enabled filter by name.

  Specified by:
    `getEnabledFilter` in interface `Session`
  Parameters:
    `filterName` - The name of the filter to be retrieved.
  Returns:
    The Filter instance representing the enabled filter.

### enableFilter

    public Filter enableFilter(String filterName)

  Enable the named filter for this current session.

  Specified by:
    `enableFilter` in interface `Session`
  Parameters:
    `filterName` - The name of the filter to be enabled.
  Returns:
    The Filter instance representing the enabled filter.

### disableFilter

    public void disableFilter(String filterName)

  Disable the named filter for the current session.

  Specified by:
    `disableFilter` in interface `Session`
  Parameters:
    `filterName` - The name of the filter to be disabled.

### getFilterParameterValue

    public Object getFilterParameterValue(String filterParameterName)

  Retreive the currently set value for a filter parameter.

  Specified by:
    `getFilterParameterValue` in interface `SessionImplementor`
  Parameters:
    `filterParameterName` - The filter parameter name in the format {FILTER_NAME.PARAMETER_NAME}.
  Returns:
    The filter parameter value.

### getFilterParameterType

    public Type getFilterParameterType(String filterParameterName)

  Retreive the type for a given filter parrameter.

  Specified by:
    `getFilterParameterType` in interface `SessionImplementor`
  Parameters:
    `filterParameterName` - The filter parameter name in the format {FILTER_NAME.PARAMETER_NAME}.
  Returns:
    The filter param type

### getEnabledFilters

    public Map getEnabledFilters()

  Return the currently enabled filters. The filter map is keyed by filter name, with values corresponding to the `FilterImpl` instance.

  Specified by:
    `getEnabledFilters` in interface `SessionImplementor`
  Returns:
    The currently enabled filters.

### getFetchProfile

    public String getFetchProfile()

  Get the internal fetch profile currently associated with this session.

  Specified by:
    `getFetchProfile` in interface `SessionImplementor`
  Returns:
    The current internal fetch profile, or null if none currently associated.

### setFetchProfile

    public void setFetchProfile(String fetchProfile)

  Set the current internal fetch profile for this session.

  Specified by:
    `setFetchProfile` in interface `SessionImplementor`
  Parameters:
    `fetchProfile` - The internal fetch profile name to use

### isFetchProfileEnabled

    public boolean isFetchProfileEnabled(String name)
                                  throws UnknownProfileException

  Description copied from interface: `Session`
  Is a particular fetch profile enabled on this session?

  Specified by:
    `isFetchProfileEnabled` in interface `Session`
  Parameters:
    `name` - The name of the profile to be checked.
  Returns:
    True if fetch profile is enabled; false if not.
  Throws:
    `UnknownProfileException` - Indicates that the given name does not match any known profile names
  See Also:
    `for discussion of this feature`

### enableFetchProfile

    public void enableFetchProfile(String name)
                            throws UnknownProfileException

  Description copied from interface: `Session`
  Enable a particular fetch profile on this session. No-op if requested profile is already enabled.

  Specified by:
    `enableFetchProfile` in interface `Session`
  Parameters:
    `name` - The name of the fetch profile to be enabled.
  Throws:
    `UnknownProfileException` - Indicates that the given name does not match any known profile names
  See Also:
    `for discussion of this feature`

### disableFetchProfile

    public void disableFetchProfile(String name)
                             throws UnknownProfileException

  Description copied from interface: `Session`
  Disable a particular fetch profile on this session. No-op if requested profile is already disabled.

  Specified by:
    `disableFetchProfile` in interface `Session`
  Parameters:
    `name` - The name of the fetch profile to be disabled.
  Throws:
    `UnknownProfileException` - Indicates that the given name does not match any known profile names
  See Also:
    `for discussion of this feature`

### execute

    public Object execute(LobCreationContext.Callback callback)

  Execute the given callback, making sure it has access to a viable JDBC `Connection`.

  Specified by:
    `execute` in interface `LobCreationContext`
  Parameters:
    `callback` - The callback to execute .
  Returns:
    The LOB created by the callback.

### getTypeHelper

    public TypeHelper getTypeHelper()

  Convenience access to the `TypeHelper` associated with this session's `SessionFactory`.

  Equivalent to calling `Session.getSessionFactory()`.`getTypeHelper()`

  Specified by:
    `getTypeHelper` in interface `Session`
  Returns:
    The `TypeHelper` associated with this session's `SessionFactory`

### getLobHelper

    public LobHelper getLobHelper()

  Retrieve this session's helper/delegate for creating LOB instances.

  Specified by:
    `getLobHelper` in interface `Session`
  Returns:
    This session's LOB helper

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.