public abstract class AbstractJpaVendorAdapter extends Object implements JpaVendorAdapter
JpaVendorAdapter
implementation that defines common properties,
to be translated into vendor-specific JPA properties by concrete subclasses.Constructor and Description |
---|
AbstractJpaVendorAdapter() |
Modifier and Type | Method and 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
(e.g.
|
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).
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getPersistenceProvider
public void setDatabase(Database database)
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.
protected Database getDatabase()
public void setDatabasePlatform(@Nullable String databasePlatform)
@Nullable protected String getDatabasePlatform()
public void setGenerateDdl(boolean generateDdl)
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 2.1's
javax.persistence.schema-generation.database.action
property.
These two schema generation mechanisms - standard JPA versus provider-native -
are mutually exclusive, e.g. with Hibernate 5.
protected boolean isGenerateDdl()
public void setShowSql(boolean showSql)
For more specific logging configuration, specify the appropriate vendor-specific settings as "jpaProperties".
protected boolean isShowSql()
@Nullable public String getPersistenceProviderRootPackage()
JpaVendorAdapter
getPersistenceProviderRootPackage
in interface JpaVendorAdapter
public Map<String,?> getJpaPropertyMap(PersistenceUnitInfo pui)
JpaVendorAdapter
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 Java 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.
getJpaPropertyMap
in interface JpaVendorAdapter
pui
- the PersistenceUnitInfo for the current persistence unitPersistenceUnitInfo.getTransactionType()
,
PersistenceProvider.createContainerEntityManagerFactory(PersistenceUnitInfo, Map)
public Map<String,?> getJpaPropertyMap()
JpaVendorAdapter
Note that there might be further JPA properties defined on the EntityManagerFactory bean, which might potentially override individual JPA property values specified here.
getJpaPropertyMap
in interface JpaVendorAdapter
Persistence.createEntityManagerFactory(String, Map)
@Nullable public JpaDialect getJpaDialect()
JpaVendorAdapter
null
if there is none.getJpaDialect
in interface JpaVendorAdapter
public Class<? extends EntityManagerFactory> getEntityManagerFactoryInterface()
JpaVendorAdapter
If the provider does not offer any EntityManagerFactory extensions,
the adapter should simply return the standard
EntityManagerFactory
class here.
getEntityManagerFactoryInterface
in interface JpaVendorAdapter
public Class<? extends EntityManager> getEntityManagerInterface()
JpaVendorAdapter
If the provider does not offer any EntityManager extensions,
the adapter should simply return the standard
EntityManager
class here.
getEntityManagerInterface
in interface JpaVendorAdapter
public void postProcessEntityManagerFactory(EntityManagerFactory emf)
JpaVendorAdapter
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.
postProcessEntityManagerFactory
in interface JpaVendorAdapter
public void postProcessEntityManager(EntityManager em)
JpaVendorAdapter
This can be used for setting vendor-specific parameters, e.g. Hibernate filters, on every new EntityManager.
postProcessEntityManager
in interface JpaVendorAdapter