Class HibernateJpaVendorAdapter
- All Implemented Interfaces:
JpaVendorAdapter
JpaVendorAdapter implementation for Hibernate.
Compatible with Hibernate ORM 7.x.
Exposes Hibernate's persistence provider and Hibernate's Session as extended
EntityManager interface, and adapts AbstractJpaVendorAdapter's common
configuration settings. Also supports the detection of annotated packages (through
SmartPersistenceUnitInfo.getManagedPackages()),
for example, containing Hibernate FilterDef annotations,
along with Spring-driven entity scanning which requires no persistence.xml
(LocalContainerEntityManagerFactoryBean.setPackagesToScan(String...)).
A note about HibernateJpaVendorAdapter vs native Hibernate settings:
Some settings on this adapter may conflict with native Hibernate configuration rules
or custom Hibernate properties. For example, specify either AbstractJpaVendorAdapter.setDatabase(Database) or
Hibernate's "hibernate.dialect_resolvers" property, not both. Also, be careful about
Hibernate's connection release mode: This adapter prefers ON_CLOSE behavior,
aligned with HibernateJpaDialect.setPrepareConnection(boolean), at least for non-JTA
scenarios; you may override this through corresponding native Hibernate properties.
- Since:
- 2.0
- Author:
- Juergen Hoeller, Rod Johnson
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondetermineDatabaseDialectClass(Database database) Determine the Hibernate database dialect class for the given target database.determineDatabaseDialectName(Database database) Determine the Hibernate database dialect class name for the given target database.Class<? extends jakarta.persistence.EntityManagerFactory> Return the vendor-specific EntityManagerFactory interface that the EntityManagerFactory proxy is supposed to implement.Class<? extends jakarta.persistence.EntityManager> Return the vendor-specific EntityManager interface that this provider's EntityManagers will implement.Return the vendor-specific JpaDialect implementation for this provider, ornullif there is none.Return a Map of vendor-specific JPA properties, typically based on settings in this JpaVendorAdapter instance.getJpaPropertyMap(jakarta.persistence.spi.PersistenceUnitInfo pui) Return a Map of vendor-specific JPA properties for the given persistence unit, typically based on settings in this JpaVendorAdapter instance.jakarta.persistence.spi.PersistenceProviderReturn the vendor-specific persistence provider.Return the name of the persistence provider's root package (for example, "oracle.toplink.essentials").voidsetPrepareConnection(boolean prepareConnection) Set whether to prepare the underlying JDBC Connection of a transactional Hibernate Session, that is, whether to apply a transaction-specific isolation level and/or the transaction's read-only flag to the underlying JDBC Connection.Methods inherited from class AbstractJpaVendorAdapter
getDatabase, getDatabasePlatform, isGenerateDdl, isShowSql, postProcessEntityManager, postProcessEntityManagerFactory, setDatabase, setDatabasePlatform, setGenerateDdl, setShowSql
-
Constructor Details
-
HibernateJpaVendorAdapter
public HibernateJpaVendorAdapter()
-
-
Method Details
-
setPrepareConnection
public void setPrepareConnection(boolean prepareConnection) Set whether to prepare the underlying JDBC Connection of a transactional Hibernate Session, that is, whether to apply a transaction-specific isolation level and/or the transaction's read-only flag to the underlying JDBC Connection.See
HibernateJpaDialect.setPrepareConnection(boolean)for details. This is just a convenience flag passed through toHibernateJpaDialect.On Hibernate 5.1+, this flag remains
trueby default like against previous Hibernate versions. The vendor adapter manually enforces Hibernate's new connection handling modeDELAYED_ACQUISITION_AND_HOLDin that case unless a user-specified connection handling mode property indicates otherwise; switch this flag tofalseto avoid that interference.NOTE: For a persistence unit with transaction type JTA, for example, on WebLogic, the connection release mode will never be altered from its provider default, i.e. not be forced to
DELAYED_ACQUISITION_AND_HOLDby this flag. Alternatively, set Hibernate's "hibernate.connection.handling_mode" property to "DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION" or even "DELAYED_ACQUISITION_AND_RELEASE_AFTER_STATEMENT" in such a scenario.- Since:
- 4.3.1
- See Also:
-
getPersistenceProvider
public jakarta.persistence.spi.PersistenceProvider getPersistenceProvider()Description copied from interface:JpaVendorAdapterReturn the vendor-specific persistence provider. -
getPersistenceProviderRootPackage
Description copied from interface:JpaVendorAdapterReturn the name of the persistence provider's root package (for example, "oracle.toplink.essentials"). Will be used for excluding provider classes from temporary class overriding.- Specified by:
getPersistenceProviderRootPackagein interfaceJpaVendorAdapter- Overrides:
getPersistenceProviderRootPackagein classAbstractJpaVendorAdapter
-
getJpaPropertyMap
Description copied from interface:JpaVendorAdapterReturn a Map of vendor-specific JPA properties for the given persistence unit, typically based on settings in this JpaVendorAdapter instance.Note that there might be further JPA properties defined on the EntityManagerFactory bean, which might potentially override individual JPA property values specified here.
This implementation delegates to
JpaVendorAdapter.getJpaPropertyMap()for non-unit-dependent properties. Effectively, this PersistenceUnitInfo-based variant only needs to be implemented if there is an actual need to react to unit-specific characteristics such as the transaction type.NOTE: This variant will only be invoked in case of Jakarta EE style container bootstrapping where a
PersistenceUnitInfois present (i.e.LocalContainerEntityManagerFactoryBean). In case of simple Java SE style bootstrapping viaPersistence(i.e.LocalEntityManagerFactoryBean), the parameter-lessJpaVendorAdapter.getJpaPropertyMap()variant will be called directly.- Specified by:
getJpaPropertyMapin interfaceJpaVendorAdapter- Overrides:
getJpaPropertyMapin classAbstractJpaVendorAdapter- Parameters:
pui- the PersistenceUnitInfo for the current persistence unit- Returns:
- a Map of JPA properties, as accepted by the standard JPA bootstrap facilities, or an empty Map if there are no properties to expose
- See Also:
-
getJpaPropertyMap
Description copied from interface:JpaVendorAdapterReturn a Map of vendor-specific JPA properties, typically based on settings in this JpaVendorAdapter instance.Note that there might be further JPA properties defined on the EntityManagerFactory bean, which might potentially override individual JPA property values specified here.
- Specified by:
getJpaPropertyMapin interfaceJpaVendorAdapter- Overrides:
getJpaPropertyMapin classAbstractJpaVendorAdapter- Returns:
- a Map of JPA properties, as accepted by the standard JPA bootstrap facilities, or an empty Map if there are no properties to expose
- See Also:
-
determineDatabaseDialectClass
Determine the Hibernate database dialect class for the given target database.The default implementation covers the common built-in dialects.
- Parameters:
database- the target database- Returns:
- the Hibernate database dialect class, or
nullif none found - See Also:
-
determineDatabaseDialectName
Determine the Hibernate database dialect class name for the given target database.The default implementation covers the common community dialect for Derby.
- Parameters:
database- the target database- Returns:
- the Hibernate database dialect class name, or
nullif none found - Since:
- 7.0
- See Also:
-
getJpaDialect
Description copied from interface:JpaVendorAdapterReturn the vendor-specific JpaDialect implementation for this provider, ornullif there is none.- Specified by:
getJpaDialectin interfaceJpaVendorAdapter- Overrides:
getJpaDialectin classAbstractJpaVendorAdapter
-
getEntityManagerFactoryInterface
Description copied from interface:JpaVendorAdapterReturn the vendor-specific EntityManagerFactory interface that the EntityManagerFactory proxy is supposed to implement.If the provider does not offer any EntityManagerFactory extensions, the adapter should simply return the standard
EntityManagerFactoryclass here.- Specified by:
getEntityManagerFactoryInterfacein interfaceJpaVendorAdapter- Overrides:
getEntityManagerFactoryInterfacein classAbstractJpaVendorAdapter
-
getEntityManagerInterface
Description copied from interface:JpaVendorAdapterReturn the vendor-specific EntityManager interface that this provider's EntityManagers will implement.If the provider does not offer any EntityManager extensions, the adapter should simply return the standard
EntityManagerclass here.- Specified by:
getEntityManagerInterfacein interfaceJpaVendorAdapter- Overrides:
getEntityManagerInterfacein classAbstractJpaVendorAdapter
-