|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.orm.jpa.DefaultJpaDialect org.springframework.orm.jpa.vendor.TopLinkJpaDialect
public class TopLinkJpaDialect
JpaDialect
implementation for
Oracle TopLink Essentials. Developed and tested against TopLink Essentials v2.
By default, this class acquires a TopLink transaction to get the JDBC connection
early. This allows mixing JDBC and JPA/TopLink operations in the same transaction.
In some cases, this eager acquisition of a transaction/connection may impact
scalability. In that case, set the "lazyDatabaseTransaction" flag to true if you
do not require mixing JDBC and JPA operations in the same transaction. Otherwise,
use a LazyConnectionDataSourceProxy
to ensure that the cost of connection acquisition is near zero until code actually
needs a JDBC Connection.
setLazyDatabaseTransaction(boolean)
,
LazyConnectionDataSourceProxy
Constructor Summary | |
---|---|
TopLinkJpaDialect()
|
Method Summary | |
---|---|
Object |
beginTransaction(javax.persistence.EntityManager entityManager,
TransactionDefinition definition)
This implementation invokes the standard JPA Transaction.begin
method. |
ConnectionHandle |
getJdbcConnection(javax.persistence.EntityManager em,
boolean readOnly)
This implementation always returns null ,
indicating that no JDBC Connection can be provided. |
protected oracle.toplink.essentials.sessions.Session |
getSession(javax.persistence.EntityManager em)
Get a traditional TopLink Session from the given EntityManager. |
void |
setLazyDatabaseTransaction(boolean lazyDatabaseTransaction)
Set whether to lazily start a database transaction within a TopLink transaction. |
Methods inherited from class org.springframework.orm.jpa.DefaultJpaDialect |
---|
cleanupTransaction, getEntityManagerFactoryPlusOperations, getEntityManagerPlusOperations, releaseJdbcConnection, supportsEntityManagerFactoryPlusOperations, supportsEntityManagerPlusOperations, translateExceptionIfPossible |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public TopLinkJpaDialect()
Method Detail |
---|
public void setLazyDatabaseTransaction(boolean lazyDatabaseTransaction)
By default, database transactions are started early. This allows for reusing the same JDBC Connection throughout an entire transaction, including read operations, and also for exposing TopLink transactions to JDBC access code (working on the same DataSource).
It is only recommended to switch this flag to "true" when no JDBC access code is involved in any of the transactions, and when it is acceptable to perform read operations outside of the transactional JDBC Connection.
UnitOfWork.beginEarlyTransaction()
public Object beginTransaction(javax.persistence.EntityManager entityManager, TransactionDefinition definition) throws javax.persistence.PersistenceException, 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 semantics
javax.persistence.PersistenceException
- if thrown by JPA methods
SQLException
- if thrown by JDBC methods
TransactionException
- in case of invalid argumentsEntityTransaction.begin()
,
InvalidIsolationLevelException
,
DefaultJpaDialect.cleanupTransaction(java.lang.Object)
public ConnectionHandle getJdbcConnection(javax.persistence.EntityManager em, boolean readOnly) throws javax.persistence.PersistenceException, SQLException
DefaultJpaDialect
null
,
indicating that no JDBC Connection can be provided.
getJdbcConnection
in interface JpaDialect
getJdbcConnection
in class DefaultJpaDialect
em
- the current JPA EntityManager
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
protected oracle.toplink.essentials.sessions.Session getSession(javax.persistence.EntityManager em)
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |