TopLinkJpaDialect (Spring Framework 3.2.1.RELEASE API)
Date: 2013-01-24

org.springframework.orm.jpa.vendor

## Class TopLinkJpaDialect

- java.lang.Object
- - org.springframework.orm.jpa.DefaultJpaDialect
  - - org.springframework.orm.jpa.vendor.TopLinkJpaDialect

- All Implemented Interfaces:
    Serializable, PersistenceExceptionTranslator, JpaDialect

  Deprecated.
  as of Spring 3.1, in favor of the EclipseLink project and Spring's corresponding `EclipseLinkJpaDialect`

      @Deprecated
      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`, Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `TopLinkJpaDialect()` Deprecated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `beginTransaction(EntityManager entityManager, TransactionDefinition definition)` Deprecated. This implementation invokes the standard JPA `Transaction.begin` method.
    `ConnectionHandle` | `getJdbcConnection(EntityManager em, boolean readOnly)` Deprecated. This implementation always returns `null`, indicating that no JDBC Connection can be provided.
    `protected oracle.toplink.essentials.sessions.Session` | `getSession(EntityManager em)` Deprecated. Get a traditional TopLink Session from the given EntityManager.
    `void` | `setLazyDatabaseTransaction(boolean lazyDatabaseTransaction)` Deprecated. Set whether to lazily start a database transaction within a TopLink transaction.

    - ### Methods inherited from class org.springframework.orm.jpa.DefaultJpaDialect

      `cleanupTransaction, getEntityManagerFactoryPlusOperations, getEntityManagerPlusOperations, prepareTransaction, 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()

      Deprecated.

  - ### Method Detail

    - #### setLazyDatabaseTransaction

          public void setLazyDatabaseTransaction(boolean lazyDatabaseTransaction)

      Deprecated.
      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(EntityManager entityManager,
                                TransactionDefinition definition)
                                  throws PersistenceException,
                                         SQLException,
                                         TransactionException

      Deprecated.
      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 `JpaDialect.cleanupTransaction(java.lang.Object)`). May implement the `SavepointManager` interface.
      Throws:
        `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(EntityManager em,
                                           boolean readOnly)
                                             throws PersistenceException,
                                                    SQLException

      Deprecated.
      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
        `readOnly` - whether the Connection is only needed for read-only purposes
      Returns:
        a handle for the JDBC Connection, to be passed into `releaseJdbcConnection`, or `null` if no JDBC Connection can be retrieved
      Throws:
        `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(EntityManager em)

      Deprecated.
      Get a traditional TopLink Session from the given EntityManager.