Package org.springframework.orm.jpa.vendor

# 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 Summary

Constructors
Constructor
Description
`AbstractJpaVendorAdapter()`

## Method Summary

Modifier and Type
Method
Description
`protected Database`
`getDatabase()`
Return the target database to operate on.
`protected String`
`getDatabasePlatform()`
Return the name of the target database to operate on.
`Class<? extends EntityManagerFactory>`
`getEntityManagerFactoryInterface()`
Return the vendor-specific EntityManagerFactory interface that the EntityManagerFactory proxy is supposed to implement.
`Class<? extends EntityManager>`
`getEntityManagerInterface()`
Return the vendor-specific EntityManager interface that this provider's EntityManagers will implement.
`JpaDialect`
`getJpaDialect()`
Return the vendor-specific JpaDialect implementation for this provider, or `null` if there is none.
`Map<String,?>`
`getJpaPropertyMap()`
Return a Map of vendor-specific JPA properties, typically based on settings in this JpaVendorAdapter instance.
`Map<String,?>`
`getJpaPropertyMap(PersistenceUnitInfo pui)`
Return a Map of vendor-specific JPA properties for the given persistence unit, typically based on settings in this JpaVendorAdapter instance.
`String`
`getPersistenceProviderRootPackage()`
Return the name of the persistence provider's root package (for example, "oracle.toplink.essentials").
`protected boolean`
`isGenerateDdl()`
Return whether to generate DDL after the EntityManagerFactory has been initialized creating/updating all relevant tables.
`protected boolean`
`isShowSql()`
Return whether to show SQL in the log (or in the console).
`void`
`postProcessEntityManager(EntityManager em)`
Optional callback for post-processing the native EntityManager before active use.
`void`
`postProcessEntityManagerFactory(EntityManagerFactory emf)`
Optional callback for post-processing the native EntityManagerFactory before active use.
`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
`void`
`setDatabasePlatform(String databasePlatform)`
Specify the name of the target database to operate on.
`void`
`setGenerateDdl(boolean generateDdl)`
Set whether to generate DDL after the EntityManagerFactory has been initialized, creating/updating all relevant tables.
`void`
`setShowSql(boolean showSql)`
Set whether to show SQL in the log (or in the console).

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.orm.jpa.JpaVendorAdapter

`getPersistenceProvider`

## 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, for example, with Hibernate 5.

See Also:
  - `AbstractEntityManagerFactoryBean.setJpaProperties(java.util.Properties)`

### 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:
  - `AbstractEntityManagerFactoryBean.setJpaProperties(java.util.Properties)`

### 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 (for example, "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:
  - `PersistenceUnitInfo.getTransactionType()`
  - `PersistenceProvider.createContainerEntityManagerFactory(PersistenceUnitInfo, Map)`

### 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:
  - `Persistence.createEntityManagerFactory(String, Map)`

### 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, for example, Hibernate filters, on every new EntityManager.

Specified by:
  `postProcessEntityManager` in interface `JpaVendorAdapter`