Package org.springframework.orm.jpa
Class DefaultJpaDialect
java.lang.Object
org.springframework.orm.jpa.DefaultJpaDialect
- All Implemented Interfaces:
Serializable,org.springframework.dao.support.PersistenceExceptionTranslator,JpaDialect
- Direct Known Subclasses:
EclipseLinkJpaDialect,HibernateJpaDialect
Default implementation of the
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbeginTransaction(EntityManager entityManager, org.springframework.transaction.TransactionDefinition definition) This implementation invokes the standard JPATransaction.beginmethod.voidcleanupTransaction(Object transactionData) This implementation does nothing, since the defaultbeginTransactionimplementation does not require any cleanup.org.springframework.jdbc.datasource.ConnectionHandlegetJdbcConnection(EntityManager entityManager, boolean readOnly) This implementation always returnsnull, indicating that no JDBC Connection can be provided.prepareTransaction(EntityManager entityManager, boolean readOnly, String name) This implementation simply returnsnullfor no transaction data.voidreleaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle conHandle, EntityManager em) This implementation does nothing, assuming that the Connection will implicitly be closed with the EntityManager.org.springframework.dao.DataAccessExceptionThis implementation delegates to EntityManagerFactoryUtils.
-
Constructor Details
-
DefaultJpaDialect
public DefaultJpaDialect()
-
-
Method Details
-
beginTransaction
@Nullable public Object beginTransaction(EntityManager entityManager, org.springframework.transaction.TransactionDefinition definition) throws PersistenceException, SQLException, org.springframework.transaction.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 interfaceJpaDialect- Parameters:
entityManager- the EntityManager to begin a JPA transaction ondefinition- 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 methodsSQLException- if thrown by JDBC methodsorg.springframework.transaction.TransactionException- in case of invalid arguments- See Also:
-
EntityTransaction.begin()InvalidIsolationLevelExceptioncleanupTransaction(java.lang.Object)
-
prepareTransaction
@Nullable public Object prepareTransaction(EntityManager entityManager, boolean readOnly, @Nullable String name) throws PersistenceException This implementation simply returnsnullfor no transaction data.- Specified by:
prepareTransactionin interfaceJpaDialect- Parameters:
entityManager- the EntityManager to begin a JPA transaction onreadOnly- whether the transaction is supposed to be read-onlyname- the name of the transaction (if any)- Returns:
- an arbitrary object that holds transaction data, if any
(to be passed into
JpaDialect.cleanupTransaction(java.lang.Object)) - Throws:
PersistenceException- if thrown by JPA methods- See Also:
-
cleanupTransaction
This implementation does nothing, since the defaultbeginTransactionimplementation does not require any cleanup.- Specified by:
cleanupTransactionin interfaceJpaDialect- Parameters:
transactionData- arbitrary object that holds transaction data, if any (as returned by beginTransaction or prepareTransaction)- See Also:
-
getJdbcConnection
@Nullable public org.springframework.jdbc.datasource.ConnectionHandle getJdbcConnection(EntityManager entityManager, boolean readOnly) throws PersistenceException, SQLException This implementation always returnsnull, indicating that no JDBC Connection can be provided.- Specified by:
getJdbcConnectionin interfaceJpaDialect- Parameters:
entityManager- the current JPA EntityManagerreadOnly- 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 methodsSQLException- if thrown by JDBC methods- See Also:
-
JpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, jakarta.persistence.EntityManager)ConnectionHandle.getConnection()SimpleConnectionHandleJpaTransactionManager.setDataSource(javax.sql.DataSource)
-
releaseJdbcConnection
public void releaseJdbcConnection(org.springframework.jdbc.datasource.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 interfaceJpaDialect- Parameters:
conHandle- the JDBC Connection handle to releaseem- the current JPA EntityManager- Throws:
PersistenceException- if thrown by JPA methodsSQLException- if thrown by JDBC methods- See Also:
-
translateExceptionIfPossible
@Nullable public org.springframework.dao.DataAccessException translateExceptionIfPossible(RuntimeException ex) This implementation delegates to EntityManagerFactoryUtils.- Specified by:
translateExceptionIfPossiblein interfaceorg.springframework.dao.support.PersistenceExceptionTranslator- See Also:
-