Interface SharedSessionContractImplementor
- All Superinterfaces:
AutoCloseable,Closeable,JavaType.CoercionContext,JdbcSessionOwner,LobCreationContext,QueryProducer,QueryProducerImplementor,Serializable,SharedSessionContract,TransactionCoordinatorBuilder.Options,WrapperOptions
- All Known Subinterfaces:
EventSource,SessionImplementor
- All Known Implementing Classes:
AbstractDelegateSessionImplementor,AbstractSharedSessionContract,SessionDelegatorBaseImpl,SessionImpl,SharedSessionDelegatorBaseImpl,StatelessSessionImpl,ToOneDelegateSessionImplementor
Session and
StatelessSession as used by other parts of Hibernate,
including implementors of Type, EntityPersister,
and CollectionPersister.
The Session, via this interface, implements:
-
JdbcSessionOwner, and so the session also acts as the orchestrator of a "JDBC session", and may be used to construct aJdbcCoordinator. -
TransactionCoordinatorBuilder.Options, allowing the session to control the creation of theTransactionCoordinatordelegate when it is passed as an argument toTransactionCoordinatorBuilder.buildTransactionCoordinator(org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner, org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder.Options) -
LobCreationContext, and so the session may act as the context for JDBC LOB instance creation. -
WrapperOptions, and so the session may influence the process of binding and extracting values to and from JDBC, which is performed by implementors ofJdbcType.
- Author:
- Gavin King, Steve Ebersole
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.hibernate.engine.jdbc.LobCreationContext
LobCreationContext.Callback<T> -
Method Summary
Modifier and TypeMethodDescriptionRetrieves the currentTransaction, or creates a new transaction if there is no transaction active.voidafterOperation(boolean success) Check if there is a Hibernate or JTA transaction in progress and, if there is not, flush if necessary, making sure that the connection has been committed (if it is not in autocommit mode), and finally run the after completion processing.voidCalled after each operation on aScrollableResults, providing an opportunity for a stateless session to clear its temporary persistence context.default EventSourceCast this session toEventSourceif possible.default SessionImplementorCast this object toSessionImplementor, if possible.default StatelessSessionCast this object toStatelessSession, if possible.booleanautoFlushIfRequired(Set<String> querySpaces) detect in-memory changes, determine if the changes are to tables named in the query and, if so, complete execution the flushdefault booleanautoFlushIfRequired(Set<String> querySpaces, boolean skipPreFlush) default voidbestGuessEntityName(Object object) Obtain the best estimate of the entity name of the given entity instance, which is not involved in an association, by also considering information held in the proxy, and whether the object is already associated with this session.default StringbestGuessEntityName(Object object, EntityEntry entry) Obtain the best estimate of the entity name of the given entity instance, which is not involved in an association, by also considering information held in the proxy, and whether the object is already associated with this session.default voidCheck whether the session is open, and if not: mark the current transaction, if any, for rollback only, and throw anIllegalStateException.voidcheckOpen(boolean markForRollbackIfClosed) Check whether the session is open, and if not: ifmarkForRollbackIfClosed = true, mark the current transaction, if any, for rollback only, and throw anIllegalStateException.default voidcheckTransactionNeededForUpdateOperation(String exceptionMessage) Check if an activeTransactionis available before performing an update operation against the database.voidflush()Flush this session.generateEntityKey(Object id, EntityPersister persister) Instantiate anEntityKeywith the given id and for the entity represented by the givenEntityPersister.Get the currentCacheModefor this session.The currentCacheTransactionSynchronizationassociated with this session.default IntegerGet the currently configured JDBC batch size, which might have been specified at either the session or factory level.getContextEntityIdentifier(Object object) Return the identifier of the persistent object, or null if it is not associated with this session.getEntityPersister(@Nullable String entityName, Object object) Get theEntityPersisterfor the given entity instance.Get the entity instance associated with the givenEntityKey, calling theInterceptorif necessary.Get theSessionEventListenerManagerassociated with this session.Obtain anExceptionConverterfor reporting an error.Obtain the factory which created this session.Deprecated.there's no good reason to expose this hereGet the currentFlushModefor this session.Retrieves theInterceptorassociated with this session.Obtain theJdbcCoordinatorfor this session.Obtain theJdbcServicesfor the factory which created this session.Get theLoadQueryInfluencersassociated with this session.booleanGet the persistence context for this session.Similar togetPersistenceContext(), with two differences: this version performs better as it allows for inlining and probably better prediction, and it skips some checks of the current state of the session.default SharedSessionContractImplementorReturns this object, fulfilling the contract ofWrapperOptions.default SessionFactoryImplementorObtain the factory which created this session.Obtain aUUIDwhich uniquely identifies this session.default ObjectObtain a "token" which uniquely identifies this session.default TypeConfigurationObtain theTypeConfigurationfor the factory which created this session.guessEntityName(Object entity) Obtain an estimate of the entity name of the given entity instance, which is not involved in an association, using only theEntityNameResolver.immediateLoad(String entityName, Object id) Load an instance immediately.voidinitializeCollection(PersistentCollection<?> collection, boolean writing) Initialize the given collection (if not already initialized).instantiate(String entityName, Object id) Instantiate the entity class, initializing with the given identifier.instantiate(EntityPersister persister, Object id) Instantiate the entity class of the givenEntityPersister, initializing the new instance with the given identifier.internalLoad(String entityName, Object id, boolean eager, boolean nullable) Obtain an entity instance with the given id, without checking if it was deleted or scheduled for deletion.booleanDeprecated.there's no reason to expose this herebooleanisClosed()Determines whether the session is closed.booleanbooleanAre entities and proxies loaded by this session read-only by default?default booleanDeprecated, for removal: This API element is subject to removal in a future version.this is not used anywheredefault booleanDetermines if this session implementsEventSource.default booleanDetermines whether the session is open or is waiting for auto-close.default booleanDoes this object implementSessionImplementor?default booleanDoes this object implementStatelessSession?booleanDoes this session have an active Hibernate transaction, or is it associated with a JTA transaction currently in progress?voidMarks current transaction, if any, for rollback only.voidprepareForQueryExecution(boolean requiresTxn) Prepare for the execution of aQueryorProcedureCallvoidsetAutoClear(boolean enabled) Deprecated.there's no good reason to expose this herevoidSet the currentCacheModefor this session.voidsetCriteriaCopyTreeEnabled(boolean jpaCriteriaCopyComplianceEnabled) default voidsetEnforcingFetchGraph(boolean enforcingFetchGraph) Deprecated, for removal: This API element is subject to removal in a future version.this is not used anywherevoidsetHibernateFlushMode(FlushMode flushMode) Set the currentFlushModefor this session.voidsetNativeJdbcParametersIgnored(boolean nativeJdbcParametersIgnored) booleanDeprecated.there's no reason to expose this hereMethods inherited from interface org.hibernate.resource.jdbc.spi.JdbcSessionOwner
afterTransactionBegin, afterTransactionCompletion, beforeTransactionCompletion, flushBeforeTransactionCompletion, getEventManager, getJdbcBatchSize, getJdbcConnectionAccess, getJdbcSessionContext, getSqlExceptionHelper, getTransactionCoordinator, startTransactionBoundaryMethods inherited from interface org.hibernate.engine.jdbc.LobCreationContext
execute, fromContextMethods inherited from interface org.hibernate.query.QueryProducer
createMutationQuery, createMutationQuery, createNamedSelectionQuery, createNamedSelectionQuery, createSelectionQuery, createSelectionQuery, createSelectionQueryMethods inherited from interface org.hibernate.query.spi.QueryProducerImplementor
createMutationQuery, createMutationQuery, createMutationQuery, createNamedMutationQuery, createNamedQuery, createNamedQuery, createNativeMutationQuery, createNativeQuery, createNativeQuery, createNativeQuery, createNativeQuery, createNativeQuery, createQuery, createQuery, createQuery, createQuery, createQuery, getNamedNativeQuery, getNamedNativeQuery, getNamedQueryMethods inherited from interface org.hibernate.SharedSessionContract
beginTransaction, close, createEntityGraph, createEntityGraph, createEntityGraph, createNamedStoredProcedureQuery, createStoredProcedureCall, createStoredProcedureCall, createStoredProcedureCall, createStoredProcedureQuery, createStoredProcedureQuery, createStoredProcedureQuery, disableFilter, doReturningWork, doWork, enableFilter, getCriteriaBuilder, getEnabledFilter, getEntityGraph, getEntityGraphs, getJdbcBatchSize, getNamedProcedureCall, getTenantIdentifier, getTenantIdentifierValue, getTransaction, isConnected, isJoinedToTransaction, isOpen, joinTransaction, setJdbcBatchSizeMethods inherited from interface org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder.Options
shouldAutoJoinTransactionMethods inherited from interface org.hibernate.type.descriptor.WrapperOptions
getDialect, getJdbcTimeZone, getLobCreator, getPreferredSqlTypeCodeForBoolean, useStreamForLobBinding
-
Method Details
-
getFactory
SessionFactoryImplementor getFactory()Obtain the factory which created this session.- Specified by:
getFactoryin interfaceQueryProducerImplementor- Specified by:
getFactoryin interfaceSharedSessionContract
-
getSessionFactory
Obtain the factory which created this session.- Specified by:
getSessionFactoryin interfaceWrapperOptions
-
getTypeConfiguration
Obtain theTypeConfigurationfor the factory which created this session.- Specified by:
getTypeConfigurationin interfaceJavaType.CoercionContext
-
getEventListenerManager
SessionEventListenerManager getEventListenerManager()Get theSessionEventListenerManagerassociated with this session. -
getPersistenceContext
PersistenceContext getPersistenceContext()Get the persistence context for this session.See
getPersistenceContextInternal()for a faster alternative. -
getJdbcCoordinator
JdbcCoordinator getJdbcCoordinator()Obtain theJdbcCoordinatorfor this session. -
getJdbcServices
JdbcServices getJdbcServices()Obtain theJdbcServicesfor the factory which created this session. -
getSessionIdentifier
UUID getSessionIdentifier()Obtain aUUIDwhich uniquely identifies this session.The UUID is useful mainly for logging.
-
getSession
Returns this object, fulfilling the contract ofWrapperOptions.- Specified by:
getSessionin interfaceWrapperOptions
-
getSessionToken
Obtain a "token" which uniquely identifies this session. -
isClosed
boolean isClosed()Determines whether the session is closed.- Returns:
trueif the session is closed;falseotherwise.
-
isOpenOrWaitingForAutoClose
default boolean isOpenOrWaitingForAutoClose()Determines whether the session is open or is waiting for auto-close.- Returns:
trueif the session is closed, or if it's waiting for auto-close;falseotherwise.
-
checkOpen
default void checkOpen()Check whether the session is open, and if not:- mark the current transaction, if any, for rollback only, and
- throw an
IllegalStateException. (JPA specifies this exception type.)
-
checkOpen
void checkOpen(boolean markForRollbackIfClosed) Check whether the session is open, and if not:- if
markForRollbackIfClosed = true, mark the current transaction, if any, for rollback only, and - throw an
IllegalStateException. (JPA specifies this exception type.)
- if
-
prepareForQueryExecution
void prepareForQueryExecution(boolean requiresTxn) Prepare for the execution of aQueryorProcedureCall -
markForRollbackOnly
void markForRollbackOnly()Marks current transaction, if any, for rollback only. -
getCacheTransactionSynchronization
CacheTransactionSynchronization getCacheTransactionSynchronization()The currentCacheTransactionSynchronizationassociated with this session. This may benullif the session is not currently associated with an active transaction. -
isTransactionInProgress
boolean isTransactionInProgress()Does this session have an active Hibernate transaction, or is it associated with a JTA transaction currently in progress? -
checkTransactionNeededForUpdateOperation
Check if an activeTransactionis available before performing an update operation against the database.If an active transaction is necessary, but no transaction is active, a
TransactionRequiredExceptionis raised.- Parameters:
exceptionMessage- the message to use for theTransactionRequiredException
-
accessTransaction
Transaction accessTransaction()Retrieves the currentTransaction, or creates a new transaction if there is no transaction active.This method is primarily for internal or integrator use.
- Returns:
- the
Transaction
-
generateEntityKey
Instantiate anEntityKeywith the given id and for the entity represented by the givenEntityPersister.- Parameters:
id- The entity idpersister- The entity persister- Returns:
- The entity key
-
getInterceptor
Interceptor getInterceptor()Retrieves theInterceptorassociated with this session. -
setAutoClear
Deprecated.there's no good reason to expose this hereEnable or disable automatic cache clearing from after transaction completion. -
initializeCollection
void initializeCollection(PersistentCollection<?> collection, boolean writing) throws HibernateException Initialize the given collection (if not already initialized).- Throws:
HibernateException
-
internalLoad
Object internalLoad(String entityName, Object id, boolean eager, boolean nullable) throws HibernateException Obtain an entity instance with the given id, without checking if it was deleted or scheduled for deletion.- When
nullable = false, this method may create a new proxy or return an existing proxy; if it does not exist, an exception is thrown. - When
nullable = true, the method does not create new proxies, though it might return an existing proxy; if it does not exist, anullvalue is returned.
When
eager = true, the object is eagerly fetched from the database.- Throws:
HibernateException
- When
-
immediateLoad
Load an instance immediately. This method is only called when lazily initializing a proxy. Do not return the proxy.- Throws:
HibernateException
-
getEntityPersister
EntityPersister getEntityPersister(@Nullable String entityName, Object object) throws HibernateException Get theEntityPersisterfor the given entity instance.- Parameters:
entityName- optional entity nameobject- the entity instance- Throws:
HibernateException
-
getEntityUsingInterceptor
Get the entity instance associated with the givenEntityKey, calling theInterceptorif necessary.- Throws:
HibernateException
-
getContextEntityIdentifier
Return the identifier of the persistent object, or null if it is not associated with this session. -
bestGuessEntityName
Obtain the best estimate of the entity name of the given entity instance, which is not involved in an association, by also considering information held in the proxy, and whether the object is already associated with this session. -
bestGuessEntityName
Obtain the best estimate of the entity name of the given entity instance, which is not involved in an association, by also considering information held in the proxy, and whether the object is already associated with this session. -
guessEntityName
Obtain an estimate of the entity name of the given entity instance, which is not involved in an association, using only theEntityNameResolver.- Throws:
HibernateException
-
instantiate
Instantiate the entity class, initializing with the given identifier.- Throws:
HibernateException
-
instantiate
Instantiate the entity class of the givenEntityPersister, initializing the new instance with the given identifier.This is more efficient than
instantiate(String, Object), but not always interchangeable, since a single persister might be responsible for multiple types.- Throws:
HibernateException
-
isDefaultReadOnly
boolean isDefaultReadOnly()Are entities and proxies loaded by this session read-only by default? -
getCacheMode
CacheMode getCacheMode()Get the currentCacheModefor this session.- Specified by:
getCacheModein interfaceQueryProducerImplementor
-
setCacheMode
Set the currentCacheModefor this session. -
setCriteriaCopyTreeEnabled
void setCriteriaCopyTreeEnabled(boolean jpaCriteriaCopyComplianceEnabled) -
isCriteriaCopyTreeEnabled
boolean isCriteriaCopyTreeEnabled() -
getNativeJdbcParametersIgnored
boolean getNativeJdbcParametersIgnored() -
setNativeJdbcParametersIgnored
void setNativeJdbcParametersIgnored(boolean nativeJdbcParametersIgnored) -
getFlushMode
Deprecated.there's no good reason to expose this hereGet the currentFlushModeTypefor this session.For users of the Hibernate native APIs, we've had to rename this method as defined by Hibernate historically because the JPA contract defines a method of the same name, but returning the JPA
FlushModeTyperather than Hibernate'sFlushMode. For the former behavior, usegetHibernateFlushMode()instead.- Returns:
- The
FlushModeTypein effect for this Session.
-
setHibernateFlushMode
Set the currentFlushModefor 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's reasonable to set the session flush mode to
FlushMode.MANUALat the start of the session (in order skip some work and gain some extra performance).- Parameters:
flushMode- the new flush mode
-
getHibernateFlushMode
FlushMode getHibernateFlushMode()Get the currentFlushModefor this session.- Specified by:
getHibernateFlushModein interfaceQueryProducerImplementor- Returns:
- The flush mode
-
flush
void flush()Flush this session. -
isEventSource
default boolean isEventSource()Determines if this session implementsEventSource.Only stateful session are sources of events. If this object is a stateless session, this method return
false. -
asEventSource
Cast this session toEventSourceif possible.Only stateful session are sources of events. If this object is a stateless session, this method throws.
- Throws:
ClassCastException- if the cast is not possible
-
afterScrollOperation
void afterScrollOperation()Called after each operation on aScrollableResults, providing an opportunity for a stateless session to clear its temporary persistence context. For a stateful session, this method does nothing. -
shouldAutoClose
Deprecated.there's no reason to expose this hereShould this session be automatically closed after the current transaction completes? -
isAutoCloseSessionEnabled
Deprecated.there's no reason to expose this hereIs auto-close at transaction completion enabled? -
getLoadQueryInfluencers
LoadQueryInfluencers getLoadQueryInfluencers()Get theLoadQueryInfluencersassociated with this session.- Returns:
- the
LoadQueryInfluencersassociated with this session; should never be null.
-
getExceptionConverter
ExceptionConverter getExceptionConverter()Obtain anExceptionConverterfor reporting an error.The converter associated to a session might be lazily initialized, so only invoke this getter when there's an actual need to use it.
- Returns:
- the ExceptionConverter for this Session.
-
getConfiguredJdbcBatchSize
Get the currently configured JDBC batch size, which might have been specified at either the session or factory level.- Returns:
- the session-level JDBC batch size is set, or the factory-level setting otherwise
- Since:
- 5.2
- See Also:
-
getPersistenceContextInternal
PersistenceContext getPersistenceContextInternal()Similar togetPersistenceContext(), with two differences:- this version performs better as it allows for inlining and probably better prediction, and
- it skips some checks of the current state of the session.
- Returns:
- the
PersistenceContextassociated to this session.
-
autoFlushIfRequired
detect in-memory changes, determine if the changes are to tables named in the query and, if so, complete execution the flush- Parameters:
querySpaces- the tables named in the query.- Returns:
- true if flush is required, false otherwise.
- Throws:
HibernateException
-
autoFlushIfRequired
default boolean autoFlushIfRequired(Set<String> querySpaces, boolean skipPreFlush) throws HibernateException - Throws:
HibernateException
-
autoPreFlush
default void autoPreFlush() -
isEnforcingFetchGraph
Deprecated, for removal: This API element is subject to removal in a future version.this is not used anywhereAre we currently enforcing a fetch graph? -
setEnforcingFetchGraph
@Deprecated(since="6", forRemoval=true) default void setEnforcingFetchGraph(boolean enforcingFetchGraph) Deprecated, for removal: This API element is subject to removal in a future version.this is not used anywhereEnable or disable fetch graph enforcement. -
afterOperation
void afterOperation(boolean success) Check if there is a Hibernate or JTA transaction in progress and, if there is not, flush if necessary, making sure that the connection has been committed (if it is not in autocommit mode), and finally run the after completion processing.- Parameters:
success-trueif the operation a success
-
asSessionImplementor
Cast this object toSessionImplementor, if possible.- Throws:
ClassCastException- if the cast is not possible
-
isSessionImplementor
default boolean isSessionImplementor()Does this object implementSessionImplementor? -
asStatelessSession
Cast this object toStatelessSession, if possible.- Throws:
ClassCastException- if the cast is not possible
-
isStatelessSession
default boolean isStatelessSession()Does this object implementStatelessSession?
-