站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > Spring Framework 2.1.0 API 文档英文版

TopLinkJpaDialect (Spring Framework API 2.1) - Spring Framework 2.1.0 API 文档英文版


The Spring Framework

org.springframework.orm.jpa.vendor
Class TopLinkJpaDialect

java.lang.Object
  extended by org.springframework.orm.jpa.DefaultJpaDialect
      extended by org.springframework.orm.jpa.vendor.TopLinkJpaDialect
All Implemented Interfaces:
PersistenceExceptionTranslator, JpaDialect

public class TopLinkJpaDialect
extends DefaultJpaDialect

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.

Since:
2.0
Author:
Rod Johnson, Juergen Hoeller
See Also:
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

TopLinkJpaDialect

public TopLinkJpaDialect()
Method Detail

setLazyDatabaseTransaction

public void setLazyDatabaseTransaction(boolean lazyDatabaseTransaction)
Set whether to lazily start a database transaction within a TopLink transaction.

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.

See Also:
UnitOfWork.beginEarlyTransaction()

beginTransaction

public Object beginTransaction(javax.persistence.EntityManager entityManager,
                               TransactionDefinition definition)
                        throws javax.persistence.PersistenceException,
                               SQLException,
                               TransactionException
Description copied from class: DefaultJpaDialect
This implementation invokes the standard JPA 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.

Specified by:
beginTransaction in interface JpaDialect
Overrides:
beginTransaction in class DefaultJpaDialect
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 cleanupTransaction)
Throws:
javax.persistence.PersistenceException - if thrown by JPA methods
SQLException - if thrown by JDBC methods
TransactionException - in case of invalid arguments
See Also:
EntityTransaction.begin(), InvalidIsolationLevelException, DefaultJpaDialect.cleanupTransaction(java.lang.Object)

getJdbcConnection

public ConnectionHandle getJdbcConnection(javax.persistence.EntityManager em,
                                          boolean readOnly)
                                   throws javax.persistence.PersistenceException,
                                          SQLException
Description copied from class: DefaultJpaDialect
This implementation always returns null, indicating that no JDBC Connection can be provided.

Specified by:
getJdbcConnection in interface JpaDialect
Overrides:
getJdbcConnection in class DefaultJpaDialect
Parameters:
em - the current JPA EntityManager
Returns:
a handle for the JDBC Connection, to be passed into releaseJdbcConnection, or null if no JDBC Connection can be retrieved
Throws:
javax.persistence.PersistenceException - if thrown by JPA methods
SQLException - if thrown by JDBC methods
See Also:
JpaDialect.releaseJdbcConnection(org.springframework.jdbc.datasource.ConnectionHandle, javax.persistence.EntityManager), ConnectionHandle.getConnection(), SimpleConnectionHandle, JpaTransactionManager.setDataSource(javax.sql.DataSource), NativeJdbcExtractor

getSession

protected oracle.toplink.essentials.sessions.Session getSession(javax.persistence.EntityManager em)
Get a traditional TopLink Session from the given EntityManager.


The Spring Framework

Copyright © 2002-2007 The Spring Framework.