java.lang.Object | ||
↳ | org.springframework.orm.jpa.DefaultJpaDialect | |
↳ | org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect |
JpaDialect
implementation for Eclipse
Persistence Services (EclipseLink). Developed and tested against EclipseLink 1.0.
By default, this class acquires a EclipseLink transaction to get the JDBC Connection
early. This allows mixing JDBC and JPA/EclipseLink 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.
This class is very analogous to TopLinkJpaDialect
, since
EclipseLink is effectively the next generation of the TopLink product.
Thanks to Mike Keith for the original EclipseLink support prototype!
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
This implementation invokes the standard JPA
Transaction.begin
method. | |||||||||||
This implementation always returns
null ,
indicating that no JDBC Connection can be provided. | |||||||||||
Set whether to lazily start a database transaction within an
EclipseLink transaction.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Get a traditional EclipseLink Session from the given EntityManager.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.springframework.orm.jpa.DefaultJpaDialect
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
org.springframework.dao.support.PersistenceExceptionTranslator
| |||||||||||
From interface
org.springframework.orm.jpa.JpaDialect
|
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.
entityManager | the EntityManager to begin a JPA transaction on |
---|---|
definition | the Spring transaction definition that defines semantics |
cleanupTransaction(Object)
). May implement the
SavepointManager
interface.PersistenceException | |
---|---|
SQLException | |
TransactionException |
This implementation always returns null
,
indicating that no JDBC Connection can be provided.
em | the current JPA EntityManager |
---|---|
readOnly | whether the Connection is only needed for read-only purposes |
releaseJdbcConnection
, or null
if no JDBC Connection can be retrievedPersistenceException | |
---|---|
SQLException |
Set whether to lazily start a database transaction within an EclipseLink 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 EclipseLink 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.
Get a traditional EclipseLink Session from the given EntityManager.