Package org.springframework.orm.jpa

# Interface JpaVendorAdapter

All Known Implementing Classes:
  `AbstractJpaVendorAdapter`, `EclipseLinkJpaVendorAdapter`, `HibernateJpaVendorAdapter`

public interface JpaVendorAdapter
SPI interface that allows to plug in vendor-specific behavior into Spring's EntityManagerFactory creators. Serves as single configuration point for all vendor-specific properties.

Since:
  2.0
Author:
  Juergen Hoeller, Rod Johnson
See Also:
  - `AbstractEntityManagerFactoryBean.setJpaVendorAdapter(org.springframework.orm.jpa.JpaVendorAdapter)`

## Method Summary

Modifier and Type
Method
Description
`default Class<? extends EntityManagerFactory>`
`getEntityManagerFactoryInterface()`
Return the vendor-specific EntityManagerFactory interface that the EntityManagerFactory proxy is supposed to implement.
`default Class<? extends EntityManager>`
`getEntityManagerInterface()`
Return the vendor-specific EntityManager interface that this provider's EntityManagers will implement.
`default JpaDialect`
`getJpaDialect()`
Return the vendor-specific JpaDialect implementation for this provider, or `null` if there is none.
`default Map<String,?>`
`getJpaPropertyMap()`
Return a Map of vendor-specific JPA properties, typically based on settings in this JpaVendorAdapter instance.
`default 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.
`PersistenceProvider`
`getPersistenceProvider()`
Return the vendor-specific persistence provider.
`default String`
`getPersistenceProviderRootPackage()`
Return the name of the persistence provider's root package (for example, "oracle.toplink.essentials").
`default void`
`postProcessEntityManager(EntityManager em)`
Optional callback for post-processing the native EntityManager before active use.
`default void`
`postProcessEntityManagerFactory(EntityManagerFactory emf)`
Optional callback for post-processing the native EntityManagerFactory before active use.

## Method Details

### getPersistenceProvider

PersistenceProvider getPersistenceProvider()
Return the vendor-specific persistence provider.

### getPersistenceProviderRootPackage

@Nullable default String getPersistenceProviderRootPackage()
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.

Since:
  2.5.2

### getJpaPropertyMap

default 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.

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 `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 `getJpaPropertyMap()` variant will be called directly.

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
Since:
  4.3.13
See Also:
  - `PersistenceUnitInfo.getTransactionType()`
  - `PersistenceProvider.createContainerEntityManagerFactory(PersistenceUnitInfo, Map)`

### getJpaPropertyMap

default Map<String,?> getJpaPropertyMap()
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.

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 default JpaDialect getJpaDialect()
Return the vendor-specific JpaDialect implementation for this provider, or `null` if there is none.

### getEntityManagerFactoryInterface

default Class<? extends EntityManagerFactory> getEntityManagerFactoryInterface()
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.

Since:
  2.5.2

### getEntityManagerInterface

default Class<? extends EntityManager> getEntityManagerInterface()
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.

### postProcessEntityManagerFactory

default void postProcessEntityManagerFactory(EntityManagerFactory emf)
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.

### postProcessEntityManager

default void postProcessEntityManager(EntityManager em)
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.

Since:
  5.3