Package org.hibernate.internal
Class SessionFactoryImpl
- java.lang.Object
-
- org.hibernate.internal.QueryParameterBindingTypeResolverImpl
-
- org.hibernate.internal.SessionFactoryImpl
-
- All Implemented Interfaces:
EntityManagerFactory,Closeable,Serializable,AutoCloseable,Referenceable,Mapping,SessionFactoryImplementor,QueryParameterBindingTypeResolver,SqmCreationContext,SessionFactory,SqlAstCreationContext
public class SessionFactoryImpl extends QueryParameterBindingTypeResolverImpl implements SessionFactoryImplementor
Concrete implementation of theSessionFactoryAPI.Exposes two interfaces:
SessionFactoryto the application, andSessionImplementor(an SPI interface) to other subsystems.
This class is thread-safe.
- See Also:
- Serialized Form
- Implementation Note:
- This class must appear immutable to clients, even if it does all kinds of caching and pooling under the covers. It is crucial that the class is not only thread-safe, but also highly concurrent. Synchronization must be used extremely sparingly.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSessionFactoryImpl.SessionBuilderImplstatic classSessionFactoryImpl.StatelessSessionBuilderImpl-
Nested classes/interfaces inherited from interface org.hibernate.SessionFactory
SessionFactory.TransactionManagementException
-
Nested classes/interfaces inherited from interface org.hibernate.engine.spi.SessionFactoryImplementor
SessionFactoryImplementor.DeserializationResolver<T extends SessionFactoryImplementor>
-
-
Constructor Summary
Constructors Constructor Description SessionFactoryImpl(MetadataImplementor bootMetamodel, SessionFactoryOptions options)Deprecated, for removal: This API element is subject to removal in a future version.This constructor will be removedSessionFactoryImpl(MetadataImplementor bootMetamodel, SessionFactoryOptions options, BootstrapContext bootstrapContext)
-
Method Summary
-
Methods inherited from class org.hibernate.internal.QueryParameterBindingTypeResolverImpl
resolveParameterBindType, resolveParameterBindType
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.query.spi.QueryParameterBindingTypeResolver
getMappingMetamodel
-
Methods inherited from interface org.hibernate.SessionFactory
fromSession, fromTransaction, inSession, inTransaction
-
Methods inherited from interface org.hibernate.engine.spi.SessionFactoryImplementor
getMappingMetamodel, getSessionFactory, resolveParameterBindType, resolveParameterBindType
-
Methods inherited from interface org.hibernate.query.sqm.spi.SqmCreationContext
getNodeBuilder
-
-
-
-
Constructor Detail
-
SessionFactoryImpl
@Deprecated(since="6.2", forRemoval=true) public SessionFactoryImpl(MetadataImplementor bootMetamodel, SessionFactoryOptions options)
Deprecated, for removal: This API element is subject to removal in a future version.This constructor will be removed
-
SessionFactoryImpl
public SessionFactoryImpl(MetadataImplementor bootMetamodel, SessionFactoryOptions options, BootstrapContext bootstrapContext)
-
-
Method Detail
-
openSession
public SessionImplementor openSession() throws HibernateException
Description copied from interface:SessionFactoryImplementorOverridesSessionFactory.openSession()to widen the return type: this is useful for internal code depending onSessionFactoryImplementoras it would otherwise need to frequently resort to casting to the internal contract.- Specified by:
openSessionin interfaceSessionFactory- Specified by:
openSessionin interfaceSessionFactoryImplementor- Returns:
- the opened Session.
- Throws:
HibernateException- Indicates a problem opening the session; pretty rare here.
-
openTemporarySession
public SessionImpl openTemporarySession() throws HibernateException
Description copied from interface:SessionFactoryImplementorGet a non-transactional "current" session (used by hibernate-envers)- Specified by:
openTemporarySessionin interfaceSessionFactoryImplementor- Throws:
HibernateException
-
getCurrentSession
public Session getCurrentSession() throws HibernateException
Description copied from interface:SessionFactoryObtains the current session, an instance ofSessionimplicitly associated with some context or scope. For example, the session might be associated with the current thread, or with the current JTA transaction.The context used for scoping the current session (that is, the definition of what precisely "current" means here) is determined by an implementation of
CurrentSessionContext. An implementation may be selected using the configuration property "hibernate.current_session_context_class".If no
CurrentSessionContextis explicitly configured, but JTA support is enabled, thenJTASessionContextis used, and the current session is scoped to the active JTA transaction.- Specified by:
getCurrentSessionin interfaceSessionFactory- Returns:
- The current session.
- Throws:
HibernateException- Indicates an issue locating a suitable current session.- See Also:
CurrentSessionContext,AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS
-
withOptions
public SessionFactoryImpl.SessionBuilderImpl withOptions()
Description copied from interface:SessionFactoryObtain a session builder for creating newSessions with certain customized options.- Specified by:
withOptionsin interfaceSessionFactory- Specified by:
withOptionsin interfaceSessionFactoryImplementor- Returns:
- The session builder
-
withStatelessOptions
public StatelessSessionBuilder withStatelessOptions()
Description copied from interface:SessionFactoryObtain aStatelessSessionbuilder.- Specified by:
withStatelessOptionsin interfaceSessionFactory- Returns:
- The stateless session builder
-
openStatelessSession
public StatelessSession openStatelessSession()
Description copied from interface:SessionFactoryOpen a new stateless session.- Specified by:
openStatelessSessionin interfaceSessionFactory- Returns:
- The created stateless session.
-
openStatelessSession
public StatelessSession openStatelessSession(Connection connection)
Description copied from interface:SessionFactoryOpen a new stateless session, utilizing the specified JDBCConnection.- Specified by:
openStatelessSessionin interfaceSessionFactory- Parameters:
connection- Connection provided by the application.- Returns:
- The created stateless session.
-
addObserver
public void addObserver(SessionFactoryObserver observer)
- Specified by:
addObserverin interfaceSessionFactoryImplementor
-
getProperties
public Map<String,Object> getProperties()
- Specified by:
getPropertiesin interfaceEntityManagerFactory
-
validateNotClosed
protected void validateNotClosed()
-
getUuid
public String getUuid()
Description copied from interface:SessionFactoryImplementorGet the UUID for this SessionFactory.The value is generated as a
UUID, but kept as a String.- Specified by:
getUuidin interfaceSessionFactoryImplementor- Returns:
- The UUID for this SessionFactory.
- See Also:
SessionFactoryRegistry.getSessionFactory(java.lang.String)
-
getName
public String getName()
Description copied from interface:SessionFactoryImplementorAccess to the name (if one) assigned to the SessionFactory- Specified by:
getNamein interfaceSessionFactoryImplementor- Returns:
- The name for the SessionFactory
-
getTypeConfiguration
public TypeConfiguration getTypeConfiguration()
- Specified by:
getTypeConfigurationin interfaceQueryParameterBindingTypeResolver- Specified by:
getTypeConfigurationin interfaceSessionFactoryImplementor
-
getQueryEngine
public QueryEngine getQueryEngine()
- Specified by:
getQueryEnginein interfaceSessionFactoryImplementor- Specified by:
getQueryEnginein interfaceSqmCreationContext
-
getEventEngine
public EventEngine getEventEngine()
Description copied from interface:SessionFactoryImplementorGet the EventEngine associated with this SessionFactory- Specified by:
getEventEnginein interfaceSessionFactoryImplementor
-
getJdbcServices
public JdbcServices getJdbcServices()
Description copied from interface:SessionFactoryImplementorGet the JdbcServices.- Specified by:
getJdbcServicesin interfaceSessionFactoryImplementor- Returns:
- the JdbcServices
-
getSqlStringGenerationContext
public SqlStringGenerationContext getSqlStringGenerationContext()
- Specified by:
getSqlStringGenerationContextin interfaceSessionFactoryImplementor
-
getIdentifierGeneratorFactory
public IdentifierGeneratorFactory getIdentifierGeneratorFactory()
-
getDeserializationResolver
@Deprecated public SessionFactoryImplementor.DeserializationResolver<?> getDeserializationResolver()
Deprecated.- Specified by:
getDeserializationResolverin interfaceSessionFactoryImplementor
-
findEntityGraphsByType
public <T> List<EntityGraph<? super T>> findEntityGraphsByType(Class<T> entityClass)
Description copied from interface:SessionFactoryReturn allEntityGraphs registered for the given entity type.- Specified by:
findEntityGraphsByTypein interfaceSessionFactory- See Also:
EntityManagerFactory.addNamedEntityGraph(java.lang.String, jakarta.persistence.EntityGraph<T>)
-
createEntityManager
public Session createEntityManager()
- Specified by:
createEntityManagerin interfaceEntityManagerFactory
-
createEntityManager
public Session createEntityManager(Map map)
- Specified by:
createEntityManagerin interfaceEntityManagerFactory
-
createEntityManager
public Session createEntityManager(SynchronizationType synchronizationType)
- Specified by:
createEntityManagerin interfaceEntityManagerFactory
-
createEntityManager
public Session createEntityManager(SynchronizationType synchronizationType, Map map)
- Specified by:
createEntityManagerin interfaceEntityManagerFactory
-
getCriteriaBuilder
public NodeBuilder getCriteriaBuilder()
Description copied from interface:SessionFactory- Specified by:
getCriteriaBuilderin interfaceEntityManagerFactory- Specified by:
getCriteriaBuilderin interfaceSessionFactory- Specified by:
getCriteriaBuilderin interfaceSessionFactoryImplementor- See Also:
SharedSessionContract.getCriteriaBuilder()
-
getMetamodel
public MetamodelImplementor getMetamodel()
- Specified by:
getMetamodelin interfaceEntityManagerFactory- Specified by:
getMetamodelin interfaceSessionFactoryImplementor
-
isOpen
public boolean isOpen()
- Specified by:
isOpenin interfaceEntityManagerFactory
-
findEntityGraphByName
public RootGraphImplementor<?> findEntityGraphByName(String name)
Description copied from interface:SessionFactoryReturn the rootEntityGraphwith the given name, ornullif there is no graph with the given name.- Specified by:
findEntityGraphByNamein interfaceSessionFactory- Specified by:
findEntityGraphByNamein interfaceSessionFactoryImplementor- Parameters:
name- the name given to someNamedEntityGraph- Returns:
- an instance of
RootGraph - See Also:
EntityManagerFactory.addNamedEntityGraph(java.lang.String, jakarta.persistence.EntityGraph<T>)
-
bestGuessEntityName
public String bestGuessEntityName(Object object)
Description copied from interface:SessionFactoryImplementorThe best guess entity name for an entity not in an association- Specified by:
bestGuessEntityNamein interfaceSessionFactoryImplementor
-
getSessionFactoryOptions
public SessionFactoryOptions getSessionFactoryOptions()
Description copied from interface:SessionFactoryGet the options used to build this factory.- Specified by:
getSessionFactoryOptionsin interfaceSessionFactory- Specified by:
getSessionFactoryOptionsin interfaceSessionFactoryImplementor- Returns:
- The special options used to build the factory.
-
getInterceptor
public Interceptor getInterceptor()
-
getReference
public Reference getReference()
- Specified by:
getReferencein interfaceReferenceable
-
getIdentifierType
public Type getIdentifierType(String className) throws MappingException
- Specified by:
getIdentifierTypein interfaceMapping- Throws:
MappingException
-
getIdentifierPropertyName
public String getIdentifierPropertyName(String className) throws MappingException
- Specified by:
getIdentifierPropertyNamein interfaceMapping- Throws:
MappingException
-
getCollectionMetadata
public CollectionMetadata getCollectionMetadata(String roleName) throws HibernateException
- Throws:
HibernateException
-
getReferencedPropertyType
public Type getReferencedPropertyType(String className, String propertyName) throws MappingException
- Specified by:
getReferencedPropertyTypein interfaceMapping- Throws:
MappingException
-
close
public void close() throws HibernateExceptionCloses the session factory, releasing all held resources.- cleans up used cache regions and "stops" the cache provider.
- close the JDBC connection
- remove the JNDI binding
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceEntityManagerFactory- Specified by:
closein interfaceSessionFactory- Throws:
HibernateException- Indicates an issue closing the factory.
-
getCache
public CacheImplementor getCache()
Description copied from interface:SessionFactoryObtain direct access to the underlying cache regions.- Specified by:
getCachein interfaceEntityManagerFactory- Specified by:
getCachein interfaceSessionFactory- Specified by:
getCachein interfaceSessionFactoryImplementor- Returns:
- The direct cache access API.
-
getPersistenceUnitUtil
public PersistenceUnitUtil getPersistenceUnitUtil()
- Specified by:
getPersistenceUnitUtilin interfaceEntityManagerFactory
-
addNamedQuery
public void addNamedQuery(String name, Query query)
- Specified by:
addNamedQueryin interfaceEntityManagerFactory
-
unwrap
public <T> T unwrap(Class<T> type)
- Specified by:
unwrapin interfaceEntityManagerFactory
-
addNamedEntityGraph
public <T> void addNamedEntityGraph(String graphName, EntityGraph<T> entityGraph)
- Specified by:
addNamedEntityGraphin interfaceEntityManagerFactory
-
isClosed
public boolean isClosed()
Description copied from interface:SessionFactoryIs this factory already closed?- Specified by:
isClosedin interfaceSessionFactory- Returns:
- True if this factory is already closed; false otherwise.
-
getStatistics
public StatisticsImplementor getStatistics()
Description copied from interface:SessionFactoryRetrieve the statistics for this factory.- Specified by:
getStatisticsin interfaceSessionFactory- Specified by:
getStatisticsin interfaceSessionFactoryImplementor- Returns:
- The statistics.
-
getFilterDefinition
public FilterDefinition getFilterDefinition(String filterName) throws HibernateException
Description copied from interface:SessionFactoryObtain the definition of a filter by name.- Specified by:
getFilterDefinitionin interfaceSessionFactory- Specified by:
getFilterDefinitionin interfaceSessionFactoryImplementor- Parameters:
filterName- The name of the filter for which to obtain the definition.- Returns:
- The filter definition.
- Throws:
HibernateException- If no filter defined with the given name.
-
containsFetchProfileDefinition
public boolean containsFetchProfileDefinition(String name)
Description copied from interface:SessionFactoryDetermine if there is a fetch profile definition registered under the given name.- Specified by:
containsFetchProfileDefinitionin interfaceSessionFactory- Parameters:
name- The name to check- Returns:
- True if there is such a fetch profile; false otherwise.
-
getDefinedFilterNames
public Set<String> getDefinedFilterNames()
Description copied from interface:SessionFactoryObtain the set of names of alldefined filters.- Specified by:
getDefinedFilterNamesin interfaceSessionFactory- Returns:
- The set of filter names given by
FilterDefannotations
-
getDefinedFetchProfileNames
public Set<String> getDefinedFetchProfileNames()
Description copied from interface:SessionFactoryObtain the set of names of alldefined fetch profiles.- Specified by:
getDefinedFetchProfileNamesin interfaceSessionFactory- Returns:
- The set of fetch profile names given by
FetchProfileannotations.
-
getIdentifierGenerator
@Deprecated public IdentifierGenerator getIdentifierGenerator(String rootEntityName)
Deprecated.Description copied from interface:SessionFactoryImplementorGet the identifier generator for the hierarchy- Specified by:
getIdentifierGeneratorin interfaceSessionFactoryImplementor
-
getGenerator
@Deprecated public Generator getGenerator(String rootEntityName)
Deprecated.Description copied from interface:SessionFactoryImplementorGet the identifier generator for the hierarchy- Specified by:
getGeneratorin interfaceSessionFactoryImplementor
-
getRuntimeMetamodels
public RuntimeMetamodelsImplementor getRuntimeMetamodels()
- Specified by:
getRuntimeMetamodelsin interfaceSessionFactoryImplementor
-
getJpaMetamodel
public JpaMetamodelImplementor getJpaMetamodel()
Description copied from interface:SqmCreationContextAccess to the domain model metadata- Specified by:
getJpaMetamodelin interfaceSqmCreationContext
-
getMaximumFetchDepth
public Integer getMaximumFetchDepth()
Description copied from interface:SqlAstCreationContextWhen creatingFetchreferences, defines a limit to how deep we should join for fetches.- Specified by:
getMaximumFetchDepthin interfaceSqlAstCreationContext
-
getServiceRegistry
public ServiceRegistryImplementor getServiceRegistry()
Description copied from interface:SessionFactoryImplementorAccess to the ServiceRegistry for this SessionFactory.- Specified by:
getServiceRegistryin interfaceSessionFactoryImplementor- Specified by:
getServiceRegistryin interfaceSqlAstCreationContext- Specified by:
getServiceRegistryin interfaceSqmCreationContext- Returns:
- The factory's ServiceRegistry
-
getEntityNotFoundDelegate
public EntityNotFoundDelegate getEntityNotFoundDelegate()
- Specified by:
getEntityNotFoundDelegatein interfaceSessionFactoryImplementor
-
getFetchProfile
public FetchProfile getFetchProfile(String name)
Description copied from interface:SessionFactoryImplementorRetrieve fetch profile by name.- Specified by:
getFetchProfilein interfaceSessionFactoryImplementor- Parameters:
name- The name of the profile to retrieve.- Returns:
- The profile definition
-
configuredInterceptor
@Deprecated public static Interceptor configuredInterceptor(Interceptor interceptor, SessionFactoryOptions options)
-
configuredInterceptor
public static Interceptor configuredInterceptor(Interceptor interceptor, boolean explicitNoInterceptor, SessionFactoryOptions options)
-
getCustomEntityDirtinessStrategy
public CustomEntityDirtinessStrategy getCustomEntityDirtinessStrategy()
- Specified by:
getCustomEntityDirtinessStrategyin interfaceSessionFactoryImplementor
-
getCurrentTenantIdentifierResolver
public CurrentTenantIdentifierResolver getCurrentTenantIdentifierResolver()
- Specified by:
getCurrentTenantIdentifierResolverin interfaceSessionFactoryImplementor
-
getFastSessionServices
public FastSessionServices getFastSessionServices()
- Specified by:
getFastSessionServicesin interfaceSessionFactoryImplementor- Returns:
- the
FastSessionServicesfor thisSessionFactory.
-
getWrapperOptions
public WrapperOptions getWrapperOptions()
- Specified by:
getWrapperOptionsin interfaceSessionFactoryImplementor
-
getSchemaManager
public SchemaManager getSchemaManager()
Description copied from interface:SessionFactoryASchemaManagerwith the same default catalog and schema as pooled connections belonging to this factory. Intended mostly as a convenience for writing tests.- Specified by:
getSchemaManagerin interfaceSessionFactory
-
-