Deprecated API
Contents
-
Terminally Deprecated ElementsElementDescriptionNo longer usedNo longer has any effect.Use settings,
TypeContributor,FunctionContributororAdditionalMappingContributorinstead depending on needno longer calledWill be removed without replacement. See HHH-15641Will be removed without replacement. See HHH-15641Register aBytecodeProviderthrough Java services.Deprecated with no replacementRegister aBytecodeProviderthrough Java services.UseBytecodeProvider.getReflectionOptimizer(Class, Map)inssteadWill be removed with no replacement from ORM version 7 onwardsWill be removed, Hibernate ORM will use the BytecodeProvider implementation it finds on the classpath loading it via the standard ServiceLoader mechanism. Currently, there is only a single implementation which is included in Hibernate ORM, so it's not possible to override this. See HHH-17643Will be removed without replacement. See HHH-15641Will be removed without replacement. See HHH-15641useDialect.getCheckCondition(String, Long[])insteadin favor ofSize(Integer, Integer, Long)in favor ofSize(Integer, Integer, Long)No longer usedNo longer usedUse anExpectationclassSubclasses should now directly inheritPostInsertIdentifierGeneratorandBulkInsertionCapableIdentifierGenerator, or even better, simply implementOnExecutionGeneratordirectly.replaced byAssignedThis remains around as an implementation detail ofhbm.xmlmappings.This is not an elegant way to do anythingUseGeneratedValuesMutationDelegateinstead.no longer set, useJdbcEnvironment.getIdentifierHelper()Use discovery instead.Consider using discovery instead to dynamically locate contributors.Consider using discovery instead to dynamically locate contributors.UseDiscriminable.getDiscriminatorMapping()instead.Higly inefficient - do not use; this exists to support other deprecated methods and will be removed.Hibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here (generally),PluralAttributeMappingRead-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getElementDescriptor()Read-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getIdentifierDescriptor()Read-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getIndexDescriptor()Read-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getKeyDescriptor()The functionality of DiscriminatorMetadata,DiscriminatorTypeandMetaTypehave been consolidated intoEntityDiscriminatorMappingandDiscriminatorConverterThe functionality of DiscriminatorType,DiscriminatorMetadataandMetaTypehave been consolidated intoEntityDiscriminatorMappingandDiscriminatorConverterNo longer calledNo longer used in ORM coreuseEntityMutationTarget.getInsertDelegate()insteadNo longer calledNo longer used.org.hibernate.query.criteria.HibernateCriteriaBuilder.arrayContainsAllNullable(Expression<T[]>, T[]) org.hibernate.query.criteria.HibernateCriteriaBuilder.arrayContainsAllNullable(T[], Expression<T[]>) No longer calledUseFunctionRendererinsteadthis constructor does not carry information about the query which caused the failurewas previously used for HQL. UseSqmUpdateStatement(NodeBuilder)insteadwas previously used for Criteria. UseSqmUpdateStatement(Class, SqmCriteriaNodeBuilder)instead.UseSessionBuilder.tenantIdentifier(Object)insteadSinceNavigablePath.FullPathCalculatoris no longer usedNo longer usedNo longer usedNo longer usedNo longer usedNo longer calledWill be removed. Use the other methods to visit each operation.Will be removed. Use the other methods to visit each operation.UseStatelessSessionBuilder.tenantIdentifier(Object)insteadNo longer used, seeSchemaToolingSettings.HBM2DDL_FILTER_PROVIDERNo direct replacement.No direct replacement.Replaced byAttributeMappingNo direct replacement, though seeAttributeMappingandAttributeMetadataNo direct replacementNo direct replacementNo direct replacementNo direct replacementNo direct replacementReplaced byEntityMappingType. EntityMetamodel was a first attempt at what has becomeEntityMappingTypeReplaced byEntityVersionMappingReplaced byEventTypeas id-generation has been redefined using the new broader generation approach. For 7.0, this is kept around to supporthbm.xmlmappings and will be removed in 8.0 once we finally drophbm.xmlsupport.No direct replacement; seeEntityIdentifierMappingNo direct replacement; seeEntityIdentifierMappingNo direct replacementNo direct replacementReplaced byAttributeMappingUseH2JsonJdbcTypeinsteadUse the built-in support for enumsThe functionality of MetaType,DiscriminatorTypeandDiscriminatorMetadatahave been consolidated intoEntityDiscriminatorMappingandDiscriminatorConverterIs not called anymore
-
Deprecated InterfacesInterfaceDescriptionUse settings,
TypeContributor,FunctionContributororAdditionalMappingContributorinstead depending on needPrefer the form of these methods defined onBytecodeLazyAttributeInterceptorinsteadMoved, but still need this definition for ehcachesinceSession.replicate(java.lang.Object, org.hibernate.ReplicationMode)is deprecatedUseGeneratedValuesMutationDelegateinstead.seeUUIDGeneratorConsider using discovery instead to dynamically locate contributors.Use theSpecHintsform insteadPreferJpaMetamodelUseEmbeddableDomainTypeinstead. Originally intended to describe the actual usage of an embeddable (the embedded) because it was intended to include the mapping (column, etc) information. However, that causes us to need multiple embeddable instances per embeddable class.The functionality of DiscriminatorMetadata,DiscriminatorTypeandMetaTypehave been consolidated intoEntityDiscriminatorMappingandDiscriminatorConverterUseFunctionRendererinsteadsimply construct aLockOptionsand pass it toSession.lock(Object, LockOptions).No longer usedUseTupleTransformerand/orResultListTransformerinsteadReplaced byAttributeMappingNo direct replacement; seeEntityIdentifierMappingNo direct replacement
-
Deprecated ClassesClassDescriptionUse
AvailableHintsinsteadwill move toorg.hibernate.boot.model.source.spi, where its only uses areuseDB2zIdentityColumnSupportuseDB2SequenceSupportimplementInterceptordirectlysinceSession.replicate(java.lang.Object, org.hibernate.ReplicationMode)is deprecatedbecause bothSourceandhbm.xmlare deprecated, though this implementation is instructiveSubclasses should now directly inheritPostInsertIdentifierGeneratorandBulkInsertionCapableIdentifierGenerator, or even better, simply implementOnExecutionGeneratordirectly.sinceUUIDHexGeneratoris deprecatedreplaced byAssignedThis remains around as an implementation detail ofhbm.xmlmappings.useUuidGeneratoruseUuidGeneratorandUuidGeneratorinsteadThis remains around as an implementation detail ofhbm.xmlmappings.UseClassLoaderServiceinsteadHibernate now uses StAX for XML processing and the role of this class is served now byLocalXmlResourceResolverUseAvailableHintsinsteadPlease get rid of it: such collections should be immutable.The functionality of DiscriminatorType,DiscriminatorMetadataandMetaTypehave been consolidated intoEntityDiscriminatorMappingandDiscriminatorConvertersinceResultTransformeris deprecatedsinceResultTransformeris deprecatedsinceResultTransformeris deprecatedsinceResultTransformeris deprecatedsinceResultTransformeris deprecatedNo direct replacement.No direct replacement.No direct replacement, though seeAttributeMappingandAttributeMetadataNo direct replacementNo direct replacementNo direct replacementNo direct replacementNo direct replacementReplaced byEntityMappingType. EntityMetamodel was a first attempt at what has becomeEntityMappingTypeReplaced byEntityVersionMappingNo direct replacement; seeEntityIdentifierMappingNo direct replacementReplaced byAttributeMappingUseH2JsonJdbcTypeinsteaduseFloatJdbcTypeUse the built-in support for enumsThe functionality of MetaType,DiscriminatorTypeandDiscriminatorMetadatahave been consolidated intoEntityDiscriminatorMappingandDiscriminatorConverter
-
Deprecated Enum ClassesEnum ClassDescriptionUse an
Expectationclass instead.Use anExpectationclassUse Jakarta Persistence Nulls instead.sinceSession.replicate(Object, ReplicationMode)is deprecatedReplaced byEventTypeas id-generation has been redefined using the new broader generation approach. For 7.0, this is kept around to supporthbm.xmlmappings and will be removed in 8.0 once we finally drophbm.xmlsupport.
-
Deprecated ExceptionsExceptionsDescriptionIt would be nice to be able to eliminate this completely
-
Deprecated Annotation InterfacesAnnotation InterfaceDescriptionPrefer Table.comment()Per Comment, prefer Table.comment()Use the new approach based on
IdGeneratorType.sinceGenericGeneratoris deprecated.useCurrentTimestampinsteaduse annotation members of JPA association mapping annotations, for example,OneToMany.targetEntity()
-
Deprecated FieldsFieldDescriptionCalling stored-procedures and functions via
NativeQueryis no longer supported. UseProcedureCallorStoredProcedureQueryinstead.Register aBytecodeProviderthrough Java services.Deprecated with no replacementRegister aBytecodeProviderthrough Java services.Will be removed with no replacement from ORM version 7 onwardsUseAvailableSettings.JAKARTA_LOCK_SCOPEinsteadUseAvailableSettings.JAKARTA_LOCK_TIMEOUTinsteadUseBatchSettings.BUILDERinsteadWill be removed, Hibernate ORM will use the BytecodeProvider implementation it finds on the classpath loading it via the standard ServiceLoader mechanism. Currently, there is only a single implementation which is included in Hibernate ORM, so it's not possible to override this. See HHH-17643Will be removed without replacement. See HHH-15641Will be removed without replacement. See HHH-15641this is only honored forhibernate-infinispanUseCacheSettings.JAKARTA_SHARED_CACHE_MODEinsteadUseCacheSettings.JAKARTA_SHARED_CACHE_RETRIEVE_MODEinsteadUseCacheSettings.JAKARTA_SHARED_CACHE_STORE_MODEinsteadThe JPA-standardJdbcSettings.JAKARTA_JTA_DATASOURCEorJdbcSettings.JAKARTA_JTA_DATASOURCEsetting is now preferred.UseJdbcSettings.JAKARTA_HBM2DDL_DB_MAJOR_VERSIONinsteadUseJdbcSettings.JAKARTA_HBM2DDL_DB_MINOR_VERSIONinsteadUseJdbcSettings.JAKARTA_HBM2DDL_DB_NAMEinsteadUseJdbcSettings.JAKARTA_HBM2DDL_DB_VERSIONinsteadThe JPA-standard settingJdbcSettings.JAKARTA_JDBC_DRIVERis now preferred.UseJdbcSettings.JAKARTA_HBM2DDL_CONNECTIONinsteadUseJdbcSettings.JAKARTA_JDBC_DRIVERinsteadUseJdbcSettings.JAKARTA_JDBC_PASSWORDinsteadUseJdbcSettings.JAKARTA_JDBC_URLinsteadUseJdbcSettings.JAKARTA_JDBC_USERinsteadUseJdbcSettings.JAKARTA_JTA_DATASOURCEinsteadUseJdbcSettings.JAKARTA_NON_JTA_DATASOURCEinsteadThe JPA-standard settingJdbcSettings.JAKARTA_JDBC_USERis now preferred.The JPA-standard settingJdbcSettings.JAKARTA_JDBC_URLis now preferred.The JPA-standard settingJdbcSettings.JAKARTA_JDBC_USERis now preferred.No longer has any effect. Since 7.0 (and removal of save/update processing), Hibernate always cascades PERSISTUseManagedBeanSettings.JAKARTA_CDI_BEAN_MANAGERinsteadUsePersistenceSettings.JAKARTA_PERSISTENCE_PROVIDERinsteadUsePersistenceSettings.JAKARTA_TRANSACTION_TYPEinsteadthis setting is not currently usedThe JPA-standard settingSchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SCHEMASis now preferred.Migrate toSchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SOURCEinsteadThe JPA-standard settingSchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCEis now preferred.UseValidationSettings.JAKARTA_VALIDATION_FACTORYinsteadUseValidationSettings.JAKARTA_VALIDATION_MODEinsteadThis is not an elegant way to do anythingno longer set, useJdbcEnvironment.getIdentifierHelper()UseExpectation.NoneUse discovery instead.Consider using discovery instead to dynamically locate contributors.this feature of HQL is now deprecated
-
Deprecated MethodsMethodDescriptionUse
Cache.includeLazy()for the sake of typesafety.useGenericGenerator.type()for typesafetyCalling database procedures and functions throughNativeQueryis no longer supported; useNamedStoredProcedureQueryinstead.useSQLDelete.verify()with anExpectationclassuseSQLDeleteAll.verify()with anExpectationclassuseSQLInsert.verify()with anExpectationclassuseSQLUpdate.verify()with anExpectationclassWith move to unified schema, this setting is now deprecated and will be removed once support for readinghbm.xmlfiles is fully removed.User should use NamedStoredProcedureQuery insteadUseSqlStringGenerationContext.toIdentifier(String)instead.No longer usedSee discussion ofTypeContributorin User Guide.UseTypeContributions.contributeType(BasicType)instead.UseTypeContributions.contributeType(BasicType)instead.No longer has any effect.hbm.xmlmapping file support is deprecated. Use extended orm.xml bindings instead.No longer supportedno longer calledWill be removed without replacement. See HHH-15641Will be removed without replacement. See HHH-15641UseBytecodeProvider.getReflectionOptimizer(Class, Map)inssteadonly because it's currently never calledIn dialect implementations, preferDatabaseVersion.makeCopyOrDefault(DatabaseVersion)to gracefully default to the minimum supported version.In dialect implementations, preferDatabaseVersion.makeCopyOrDefault(DatabaseVersion)to gracefully default to the minimum supported version.useDialect.getCheckCondition(String, Long[])insteadNo longer usedOverride the methodrenderInsertIntoNoColumns()on thetranslatorreturned by this dialect.This is only called fromSybaseASESqlAstTranslatorso it doesn't need to be declared here.We should not expose this directly: the other accessors that have been created as a replacement have better chances of skipping initializing this map, which is a good performance improvement.this will be removed: it provides too wide access, making it hard to optimise the internals for specific access needs. Consider using #iterateEntities instead.Use a providedSqlStringGenerationContextinstead.No longer usedNo longer usedthis method should be removed; alternative methods are available that better express the intent, allowing for better optimisations. Not aggressively removing this as it's an SPI, but also useful for testing and other contexts which are not performance sensitive. N.B. This might return an immutable map: do not use for mutations!Just as the method it overrides. Interceptors that deal with lazy state should implementBytecodeLazyAttributeInterceptorJust as the method it overrides. Interceptors that deal with lazy state should implementBytecodeLazyAttributeInterceptorInterceptors that deal with * lazy state should implementBytecodeLazyAttributeInterceptorno longer for internal use, useSessionFactoryImplementor.getMappingMetamodel()orSqmCreationContext.getJpaMetamodel()OperationalContext should cover this overload I believeOperationalContext should cover this overload I believeOperationalContext should cover this overload I believeOperationalContext should cover this overload I believethere's no good reason to expose this herethere's no reason to expose this herethere's no good reason to expose this herethere's no reason to expose this herelikely want to useEventListenerGroup.clearListeners()instead, which doesn't also reset the registered DuplicationStrategy(ies).this is not the most efficient way for iterating the event listeners. SeeEventListenerGroup.fireEventOnEachListener(Object, BiConsumer)and its overloaded variants for better alternatives.There is no plan to remove this operation, but its use should be avoided sinceFilterDefinitionis an SPI type, and so this operation is a layer-breaker.UseGraphSemantic.fromHintName(java.lang.String)insteadUseGraphSemantic.getJakartaHintName()insteadExposed for tests only.UseDatabaseStructure.configure(Optimizer)instead.Exposed for tests only.Exposed for tests only.UseJdbcBatchLogging.unableToReleaseBatchStatement()insteadDepending on context, eitherClassLoaderServiceorClassLoaderAccessshould be preferredNo longer has any effect.Always enabled. See JpaCompliance.isJpaCascadeComplianceEnabled()useCheckConstraint.constraintString(Dialect)instead.No longer supportedNo longer supportedNo longer supportednew read-by-position paradigm means that these generated aliases are no longer needednew read-by-position paradigm means that these generated aliases are no longer neededUseTable.addInitCommand(Function)instead.Should build aQualifiedTableNamethen useSqlStringGenerationContext.format(QualifiedTableName).UseDiscriminable.getDiscriminatorMapping()instead.No longer supportedshould be removeduseMappingMetamodel.locateEntityDescriptor(Class)instead- useMappingMetamodel.getEntityDescriptor(String)insteadHigly inefficient - do not use; this exists to support other deprecated methods and will be removed.UseRuntimeMetamodels.getEmbedded(NavigableRole)insteadWith no direct replacement; seeMappingMetamodel.forEachCollectionDescriptor(java.util.function.Consumer<org.hibernate.persister.collection.CollectionPersister>)andMappingMetamodel.streamCollectionDescriptors()insteadWith no direct replacement; seeMappingMetamodel.forEachEntityDescriptor(java.util.function.Consumer<org.hibernate.persister.entity.EntityPersister>)andMappingMetamodel.streamEntityDescriptors()insteaduseNaturalIdLoadAccess.using(Map)withMap.of(), which is slightly more typesafeuseMap.of()insteadHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here (generally),PluralAttributeMappingRead-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getElementDescriptor()Read-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getIdentifierDescriptor()Read-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getIndexDescriptor()Read-by-position makes this irrelevant. Currently still used bySQLQueryParserHibernate is moving away fromType. Corresponding mapping metamodel calls should be used instead - here,PluralAttributeMapping.getKeyDescriptor()by the supertypesHibernate no longer uses aliases to read from result setsHibernate no longer uses aliases to read from result setsHibernate no longer uses aliases to read from result setsHibernate no longer uses aliases to read from result setsThis feature is no longer supportedUseSelectableMapping.getSelectionExpression()insteadUseEntityPersister.getValue(java.lang.Object, int)insteadUseEntityPersister.getValues(java.lang.Object)insteadNo longer calledOnly ever used from places where we really want to useSelectStatement(select generator)InsertSelectStatementUpdateStatementDeleteStatement
UseEntityPersister.canReadFromCache()and/orEntityPersister.canWriteToCache()depending on needNo longer used in ORM coreuseEntityMutationTarget.getInsertDelegate()insteadNo longer calledNo longer used.org.hibernate.query.criteria.HibernateCriteriaBuilder.arrayContainsAllNullable(Expression<T[]>, T[]) org.hibernate.query.criteria.HibernateCriteriaBuilder.arrayContainsAllNullable(T[], Expression<T[]>) No longer calleduseQueryProducer.createQuery(String, Class),QueryProducer.createSelectionQuery(String, Class), orQueryProducer.createMutationQuery(String)depending on intentionWith no real replacementWith no real replacementUseSessionBuilder.tenantIdentifier(Object)insteadThere is no plan to remove this operation, but its use should be avoided sinceFilterDefinitionis an SPI type, and so this operation is a layer-breaker.There is no plan to remove this operation, but its use should be avoided sinceSessionFactoryOptionsis an SPI type, and so this operation is a layer-breaker.useSharedSessionBuilder.connectionHandlingMode()instead.No longer usedNo longer usedNo longer usedNo longer calledWill be removed. Use the other methods to visit each operation.Will be removed. Use the other methods to visit each operation.UseStatelessSessionBuilder.tenantIdentifier(Object)insteadNo longer used, seeSchemaToolingSettings.HBM2DDL_FILTER_PROVIDERNo longer supportedUseNonIdentifierAttribute.isDirtyCheckable()insteadnot appropriate for named enum or array typesnot appropriate for named enum or array typesnot appropriate for named enum or array types, useDdlType.getTypeName(Size, Type, DdlTypeRegistry)insteadnot appropriate for named enum or array types, useDdlType.getTypeName(Size, Type, DdlTypeRegistry)insteadnot appropriate for named enum or array types, useDdlTypeRegistry.getTypeName(int, Size, Type)insteadnot appropriate for named enum or array types, useDdlTypeRegistry.getTypeName(int, Size, Type)insteadThis operation is not very typesafe, and we're migrating away from its useThis simply isn't a very sensible place to hang theServiceRegistryThis operation is not very typesafe, and we're migrating away from its useIs not called anymore
-
Deprecated ConstructorsConstructorDescriptionprovide a
DatabaseVersioncurrently used by Hibernate Reactive This version of the constructor should handle the case in which we do actually have the option to access the DatabaseMetaData, but since Hibernate Reactive is currently not making use of it we take a shortcut.in favor ofSize(Integer, Integer, Long)in favor ofSize(Integer, Integer, Long)useRefreshEvent(Object, LockOptions, EventSource)instead.this constructor does not carry information about the query which caused the failurethis constructor does not carry information about the query which caused the failurethis constructor does not carry information about the query which caused the failurewas previously used for HQL. UseSqmUpdateStatement(NodeBuilder)insteadwas previously used for Criteria. UseSqmUpdateStatement(Class, SqmCriteriaNodeBuilder)instead.this constructor does not carry information about the query which caused the failurethis constructor does not carry information about the query which caused the failurethis constructor does not carry information about the query which caused the failureSinceNavigablePath.FullPathCalculatoris no longer used
-
Deprecated Enum Constants
-
Deprecated Annotation Interface ElementsAnnotation Interface ElementDescriptionUse
Cache.includeLazy()for the sake of typesafety.useGenericGenerator.type()for typesafetyCalling database procedures and functions throughNativeQueryis no longer supported; useNamedStoredProcedureQueryinstead.useSQLDelete.verify()with anExpectationclassuseSQLDeleteAll.verify()with anExpectationclassuseSQLInsert.verify()with anExpectationclassuseSQLUpdate.verify()with anExpectationclass
DialectOverride.SQLOrder