public class OpenJpaDialect extends DefaultJpaDialect
JpaDialect
implementation for Apache OpenJPA.
Developed and tested against OpenJPA 1.1 as well as 2.0/2.1.Modifier and Type | Class and Description |
---|---|
private static class |
OpenJpaDialect.OpenJpaConnectionHandle
ConnectionHandle implementation that fetches a new OpenJPA-provided Connection
for every
getConnection call and closes the Connection on
releaseConnection . |
private static class |
OpenJpaDialect.OpenJpaTransactionData
Transaction data Object exposed from
beginTransaction ,
implementing the SavepointManager interface. |
Constructor and Description |
---|
OpenJpaDialect() |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
beginTransaction(EntityManager entityManager,
TransactionDefinition definition)
This implementation invokes the standard JPA
Transaction.begin
method. |
ConnectionHandle |
getJdbcConnection(EntityManager entityManager,
boolean readOnly)
This implementation always returns
null ,
indicating that no JDBC Connection can be provided. |
protected OpenJPAEntityManager |
getOpenJPAEntityManager(EntityManager em)
Return the OpenJPA-specific interface of
EntityManager . |
cleanupTransaction, getEntityManagerFactoryPlusOperations, getEntityManagerPlusOperations, prepareTransaction, releaseJdbcConnection, supportsEntityManagerFactoryPlusOperations, supportsEntityManagerPlusOperations, translateExceptionIfPossible
public java.lang.Object beginTransaction(EntityManager entityManager, TransactionDefinition definition) throws PersistenceException, java.sql.SQLException, TransactionException
DefaultJpaDialect
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
beginTransaction
in class DefaultJpaDialect
entityManager
- the EntityManager to begin a JPA transaction ondefinition
- the Spring transaction definition that defines semanticsJpaDialect.cleanupTransaction(java.lang.Object)
). May implement the
SavepointManager
interface.java.sql.SQLException
- if thrown by JDBC methodsTransactionException
- in case of invalid argumentsPersistenceException
javax.persistence.EntityTransaction#begin
,
InvalidIsolationLevelException
,
DefaultJpaDialect.cleanupTransaction(java.lang.Object)
public ConnectionHandle getJdbcConnection(EntityManager entityManager, boolean readOnly) throws PersistenceException, java.sql.SQLException
DefaultJpaDialect
null
,
indicating that no JDBC Connection can be provided.getJdbcConnection
in interface JpaDialect
getJdbcConnection
in class DefaultJpaDialect
entityManager
- the current JPA EntityManagerreadOnly
- whether the Connection is only needed for read-only purposesreleaseJdbcConnection
, or null
if no JDBC Connection can be retrievedjava.sql.SQLException
- if thrown by JDBC methodsPersistenceException
JpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, EntityManager)
,
ConnectionHandle.getConnection()
,
SimpleConnectionHandle
,
JpaTransactionManager.setDataSource(javax.sql.DataSource)
,
NativeJdbcExtractor
protected OpenJPAEntityManager getOpenJPAEntityManager(EntityManager em)
EntityManager
.em
- the generic EntityManager
instanceEntityManager