Class DefaultJpaDialect
- All Implemented Interfaces:
- Serializable,- PersistenceExceptionTranslator,- JpaDialect
- Direct Known Subclasses:
- EclipseLinkJpaDialect,- HibernateJpaDialect
JpaDialect interface.
 Used as default dialect by JpaTransactionManager.
 Simply begins a standard JPA transaction in beginTransaction(jakarta.persistence.EntityManager, org.springframework.transaction.TransactionDefinition) and
 performs standard exception translation through EntityManagerFactoryUtils.
- Since:
- 2.0
- Author:
- Juergen Hoeller
- See Also:
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionbeginTransaction(EntityManager entityManager, TransactionDefinition definition) This implementation invokes the standard JPATransaction.beginmethod.voidcleanupTransaction(Object transactionData) This implementation does nothing, since the defaultbeginTransactionimplementation does not require any cleanup.getJdbcConnection(EntityManager entityManager, boolean readOnly) This implementation always returnsnull, indicating that no JDBC Connection can be provided.prepareTransaction(EntityManager entityManager, boolean readOnly, String name) Prepare a JPA transaction, applying the specified semantics.voidreleaseJdbcConnection(ConnectionHandle conHandle, EntityManager em) This implementation does nothing, assuming that the Connection will implicitly be closed with the EntityManager.This implementation delegates to EntityManagerFactoryUtils.
- 
Constructor Details- 
DefaultJpaDialectpublic DefaultJpaDialect()
 
- 
- 
Method Details- 
beginTransaction@Nullable public Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, SQLException, TransactionException This implementation invokes the standard JPATransaction.beginmethod. Throws an InvalidIsolationLevelException if a non-default isolation level is set.This implementation does not return any transaction data Object, since there is no state to be kept for a standard JPA transaction. Hence, subclasses do not have to care about the return value ( null) of this implementation and are free to return their own transaction data Object.- Specified by:
- beginTransactionin interface- JpaDialect
- Parameters:
- entityManager- the EntityManager to begin a JPA transaction on
- definition- the Spring transaction definition that defines semantics
- Returns:
- an arbitrary object that holds transaction data, if any
 (to be passed into JpaDialect.cleanupTransaction(java.lang.Object)). May implement theSavepointManagerinterface.
- Throws:
- PersistenceException- if thrown by JPA methods
- SQLException- if thrown by JDBC methods
- TransactionException- in case of invalid arguments
- See Also:
 
- 
prepareTransaction@Nullable public Object prepareTransaction(EntityManager entityManager, boolean readOnly, @Nullable String name) throws PersistenceException Description copied from interface:JpaDialectPrepare a JPA transaction, applying the specified semantics. Called by EntityManagerFactoryUtils when enlisting an EntityManager in a JTA transaction or a locally joined transaction (for example, after upgrading an unsynchronized EntityManager to a synchronized one).An implementation can apply the read-only flag as flush mode. In that case, a transaction data object can be returned that holds the previous flush mode (and possibly other data), to be reset in cleanupTransaction.Implementations can also use the Spring transaction name to optimize for specific data access use cases (effectively using the current transaction name as use case identifier). - Specified by:
- prepareTransactionin interface- JpaDialect
- Parameters:
- entityManager- the EntityManager to begin a JPA transaction on
- readOnly- whether the transaction is supposed to be read-only
- name- the name of the transaction (if any)
- Returns:
- an arbitrary object that holds transaction data, if any (to be passed into cleanupTransaction)
- Throws:
- PersistenceException- if thrown by JPA methods
- See Also:
 
- 
cleanupTransactionThis implementation does nothing, since the defaultbeginTransactionimplementation does not require any cleanup.- Specified by:
- cleanupTransactionin interface- JpaDialect
- Parameters:
- transactionData- arbitrary object that holds transaction data, if any (as returned by beginTransaction or prepareTransaction)
- See Also:
 
- 
getJdbcConnection@Nullable public ConnectionHandle getJdbcConnection(EntityManager entityManager, boolean readOnly) throws PersistenceException, SQLException This implementation always returnsnull, indicating that no JDBC Connection can be provided.- Specified by:
- getJdbcConnectionin interface- JpaDialect
- Parameters:
- entityManager- the current JPA EntityManager
- readOnly- whether the Connection is only needed for read-only purposes
- Returns:
- a handle for the Connection, to be passed into releaseJdbcConnection, ornullif no JDBC Connection can be retrieved
- Throws:
- PersistenceException- if thrown by JPA methods
- SQLException- if thrown by JDBC methods
- See Also:
 
- 
releaseJdbcConnectionpublic void releaseJdbcConnection(ConnectionHandle conHandle, EntityManager em) throws PersistenceException, SQLException This implementation does nothing, assuming that the Connection will implicitly be closed with the EntityManager.If the JPA implementation returns a Connection handle that it expects the application to close after use, the dialect implementation needs to invoke Connection.close()(or some other method with similar effect) here.- Specified by:
- releaseJdbcConnectionin interface- JpaDialect
- Parameters:
- conHandle- the JDBC Connection handle to release
- em- the current JPA EntityManager
- Throws:
- PersistenceException- if thrown by JPA methods
- SQLException- if thrown by JDBC methods
- See Also:
 
- 
translateExceptionIfPossibleThis implementation delegates to EntityManagerFactoryUtils.- Specified by:
- translateExceptionIfPossiblein interface- PersistenceExceptionTranslator
- Parameters:
- ex- a RuntimeException to translate
- Returns:
- the corresponding DataAccessException (or nullif the exception could not be translated, as in this case it may result from user code rather than from an actual persistence problem)
- See Also:
 
 
-