|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.orm.jpa.DefaultJpaDialect
public class DefaultJpaDialect
Default implementation of the JpaDialect
interface.
Used as default dialect by JpaAccessor
and JpaTransactionManager
.
Simply begins a standard JPA transaction in beginTransaction(javax.persistence.EntityManager, org.springframework.transaction.TransactionDefinition)
and performs standard exception translation through EntityManagerFactoryUtils
.
JpaAccessor.setJpaDialect(org.springframework.orm.jpa.JpaDialect)
,
JpaTransactionManager.setJpaDialect(org.springframework.orm.jpa.JpaDialect)
,
Serialized FormConstructor Summary | |
---|---|
DefaultJpaDialect()
|
Method Summary | |
---|---|
Object |
beginTransaction(javax.persistence.EntityManager entityManager,
TransactionDefinition definition)
This implementation invokes the standard JPA Transaction.begin
method. |
void |
cleanupTransaction(Object transactionData)
This implementation does nothing, since the default beginTransaction
implementation does not require any cleanup. |
EntityManagerFactoryPlusOperations |
getEntityManagerFactoryPlusOperations(javax.persistence.EntityManagerFactory rawEntityManager)
Return an EntityManagerFactoryPlusOperations implementation for the given raw EntityManagerFactory. |
EntityManagerPlusOperations |
getEntityManagerPlusOperations(javax.persistence.EntityManager rawEntityManager)
Return an EntityManagerPlusOperations implementation for the given raw EntityManager. |
ConnectionHandle |
getJdbcConnection(javax.persistence.EntityManager entityManager,
boolean readOnly)
This implementation always returns null ,
indicating that no JDBC Connection can be provided. |
Object |
prepareTransaction(javax.persistence.EntityManager entityManager,
boolean readOnly,
String name)
Prepare a JPA transaction, applying the specified semantics. |
void |
releaseJdbcConnection(ConnectionHandle conHandle,
javax.persistence.EntityManager em)
This implementation does nothing, assuming that the Connection will implicitly be closed with the EntityManager. |
boolean |
supportsEntityManagerFactoryPlusOperations()
Return whether the EntityManagerFactoryPlus(Operations) interface is supported by this provider. |
boolean |
supportsEntityManagerPlusOperations()
Return whether the EntityManagerPlus(Operations) interface is supported by this provider. |
DataAccessException |
translateExceptionIfPossible(RuntimeException ex)
This implementation delegates to EntityManagerFactoryUtils. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DefaultJpaDialect()
Method Detail |
---|
public Object beginTransaction(javax.persistence.EntityManager entityManager, TransactionDefinition definition) throws javax.persistence.PersistenceException, SQLException, TransactionException
Transaction.begin
method. 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.
beginTransaction
in interface JpaDialect
entityManager
- the EntityManager to begin a JPA transaction ondefinition
- the Spring transaction definition that defines semantics
JpaDialect.cleanupTransaction(java.lang.Object)
). May implement the
SavepointManager
interface.
javax.persistence.PersistenceException
- if thrown by JPA methods
SQLException
- if thrown by JDBC methods
TransactionException
- in case of invalid argumentsEntityTransaction.begin()
,
InvalidIsolationLevelException
,
cleanupTransaction(java.lang.Object)
public Object prepareTransaction(javax.persistence.EntityManager entityManager, boolean readOnly, String name) throws javax.persistence.PersistenceException
JpaDialect
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, as exposed by the passed-in TransactionDefinition, to optimize for specific data access use cases (effectively using the current transaction name as use case identifier).
prepareTransaction
in interface JpaDialect
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)
javax.persistence.PersistenceException
- if thrown by JPA methodsJpaDialect.cleanupTransaction(java.lang.Object)
public void cleanupTransaction(Object transactionData)
beginTransaction
implementation does not require any cleanup.
cleanupTransaction
in interface JpaDialect
transactionData
- arbitrary object that holds transaction data, if any
(as returned by beginTransaction or prepareTransaction)beginTransaction(javax.persistence.EntityManager, org.springframework.transaction.TransactionDefinition)
public ConnectionHandle getJdbcConnection(javax.persistence.EntityManager entityManager, boolean readOnly) throws javax.persistence.PersistenceException, SQLException
null
,
indicating that no JDBC Connection can be provided.
getJdbcConnection
in interface JpaDialect
entityManager
- the current JPA EntityManagerreadOnly
- whether the Connection is only needed for read-only purposes
releaseJdbcConnection
, or null
if no JDBC Connection can be retrieved
javax.persistence.PersistenceException
- if thrown by JPA methods
SQLException
- if thrown by JDBC methodsJpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, javax.persistence.EntityManager)
,
ConnectionHandle.getConnection()
,
SimpleConnectionHandle
,
JpaTransactionManager.setDataSource(javax.sql.DataSource)
,
NativeJdbcExtractor
public void releaseJdbcConnection(ConnectionHandle conHandle, javax.persistence.EntityManager em) throws javax.persistence.PersistenceException, SQLException
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.
releaseJdbcConnection
in interface JpaDialect
conHandle
- the JDBC Connection handle to releaseem
- the current JPA EntityManager
javax.persistence.PersistenceException
- if thrown by JPA methods
SQLException
- if thrown by JDBC methodsConnection.close()
public DataAccessException translateExceptionIfPossible(RuntimeException ex)
translateExceptionIfPossible
in interface PersistenceExceptionTranslator
ex
- a RuntimeException thrown
null
if the
exception could not be translated, as in this case it may result from
user code rather than an actual persistence problem)EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(java.lang.RuntimeException)
public boolean supportsEntityManagerFactoryPlusOperations()
JpaDialect
supportsEntityManagerFactoryPlusOperations
in interface JpaDialect
EntityManagerFactoryPlusOperations
,
EntityManagerFactoryPlus
public boolean supportsEntityManagerPlusOperations()
JpaDialect
supportsEntityManagerPlusOperations
in interface JpaDialect
EntityManagerPlusOperations
,
EntityManagerPlus
public EntityManagerFactoryPlusOperations getEntityManagerFactoryPlusOperations(javax.persistence.EntityManagerFactory rawEntityManager)
JpaDialect
getEntityManagerFactoryPlusOperations
in interface JpaDialect
rawEntityManager
- the raw provider-specific EntityManagerFactory
public EntityManagerPlusOperations getEntityManagerPlusOperations(javax.persistence.EntityManager rawEntityManager)
JpaDialect
getEntityManagerPlusOperations
in interface JpaDialect
rawEntityManager
- the raw provider-specific EntityManagerFactory
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |