Class AbstractJpaVendorAdapter

java.lang.Object
org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter
All Implemented Interfaces:
JpaVendorAdapter
Direct Known Subclasses:
EclipseLinkJpaVendorAdapter, HibernateJpaVendorAdapter

public abstract class AbstractJpaVendorAdapter extends Object implements JpaVendorAdapter
Abstract JpaVendorAdapter implementation that defines common properties, to be translated into vendor-specific JPA properties by concrete subclasses.
Since:
2.0
Author:
Juergen Hoeller, Rod Johnson
  • Constructor Details

    • AbstractJpaVendorAdapter

      public AbstractJpaVendorAdapter()
  • Method Details

    • setDatabase

      public void setDatabase(Database database)
      Specify the target database to operate on, as a value of the Database enum: DB2, DERBY, H2, HANA, HSQL, INFORMIX, MYSQL, ORACLE, POSTGRESQL, SQL_SERVER, SYBASE

      NOTE: This setting will override your JPA provider's default algorithm. Custom vendor properties may still fine-tune the database dialect. However, there may nevertheless be conflicts: For example, specify either this setting or Hibernate's "hibernate.dialect_resolvers" property, not both.

    • getDatabase

      protected Database getDatabase()
      Return the target database to operate on.
    • setDatabasePlatform

      public void setDatabasePlatform(@Nullable String databasePlatform)
      Specify the name of the target database to operate on. The supported values are vendor-dependent platform identifiers.
    • getDatabasePlatform

      @Nullable protected String getDatabasePlatform()
      Return the name of the target database to operate on.
    • setGenerateDdl

      public void setGenerateDdl(boolean generateDdl)
      Set whether to generate DDL after the EntityManagerFactory has been initialized, creating/updating all relevant tables.

      Note that the exact semantics of this flag depend on the underlying persistence provider. For any more advanced needs, specify the appropriate vendor-specific settings as "jpaProperties".

      NOTE: Do not set this flag to 'true' while also setting JPA's jakarta.persistence.schema-generation.database.action property. These two schema generation mechanisms - standard JPA versus provider-native - are mutually exclusive, e.g. with Hibernate 5.

      See Also:
    • isGenerateDdl

      protected boolean isGenerateDdl()
      Return whether to generate DDL after the EntityManagerFactory has been initialized creating/updating all relevant tables.
    • setShowSql

      public void setShowSql(boolean showSql)
      Set whether to show SQL in the log (or in the console).

      For more specific logging configuration, specify the appropriate vendor-specific settings as "jpaProperties".

      See Also:
    • isShowSql

      protected boolean isShowSql()
      Return whether to show SQL in the log (or in the console).
    • getPersistenceProviderRootPackage

      @Nullable public String getPersistenceProviderRootPackage()
      Description copied from interface: JpaVendorAdapter
      Return the name of the persistence provider's root package (e.g. "oracle.toplink.essentials"). Will be used for excluding provider classes from temporary class overriding.
      Specified by:
      getPersistenceProviderRootPackage in interface JpaVendorAdapter
    • getJpaPropertyMap

      public Map<String,?> getJpaPropertyMap(PersistenceUnitInfo pui)
      Description copied from interface: JpaVendorAdapter
      Return 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 PersistenceUnitInfo is present (i.e. LocalContainerEntityManagerFactoryBean). In case of simple Java SE style bootstrapping via Persistence (i.e. LocalEntityManagerFactoryBean), the parameter-less JpaVendorAdapter.getJpaPropertyMap() variant will be called directly.

      Specified by:
      getJpaPropertyMap in interface JpaVendorAdapter
      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

      public Map<String,?> getJpaPropertyMap()
      Description copied from interface: JpaVendorAdapter
      Return 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:
      getJpaPropertyMap in interface JpaVendorAdapter
      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:
    • getJpaDialect

      @Nullable public JpaDialect getJpaDialect()
      Description copied from interface: JpaVendorAdapter
      Return the vendor-specific JpaDialect implementation for this provider, or null if there is none.
      Specified by:
      getJpaDialect in interface JpaVendorAdapter
    • getEntityManagerFactoryInterface

      public Class<? extends EntityManagerFactory> getEntityManagerFactoryInterface()
      Description copied from interface: JpaVendorAdapter
      Return 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 EntityManagerFactory class here.

      Specified by:
      getEntityManagerFactoryInterface in interface JpaVendorAdapter
    • getEntityManagerInterface

      public Class<? extends EntityManager> getEntityManagerInterface()
      Description copied from interface: JpaVendorAdapter
      Return 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 EntityManager class here.

      Specified by:
      getEntityManagerInterface in interface JpaVendorAdapter
    • postProcessEntityManagerFactory

      public void postProcessEntityManagerFactory(EntityManagerFactory emf)
      Description copied from interface: JpaVendorAdapter
      Optional callback for post-processing the native EntityManagerFactory before active use.

      This can be used for triggering vendor-specific initialization processes. While this is not expected to be used for most providers, it is included here as a general extension hook.

      Specified by:
      postProcessEntityManagerFactory in interface JpaVendorAdapter
    • postProcessEntityManager

      public void postProcessEntityManager(EntityManager em)
      Description copied from interface: JpaVendorAdapter
      Optional callback for post-processing the native EntityManager before active use.

      This can be used for setting vendor-specific parameters, e.g. Hibernate filters, on every new EntityManager.

      Specified by:
      postProcessEntityManager in interface JpaVendorAdapter