public class

HibernateJpaDialect

extends DefaultJpaDialect
java.lang.Object
   ↳ org.springframework.orm.jpa.DefaultJpaDialect
     ↳ org.springframework.orm.jpa.vendor.HibernateJpaDialect

Class Overview

JpaDialect implementation for Hibernate EntityManager. Developed against Hibernate 3.3; tested against 3.3, 3.5 and 3.6 (with the latter including Hibernate EntityManager in the Hibernate core distribution).

Summary

Public Constructors
HibernateJpaDialect()
Public Methods
Object beginTransaction(EntityManager entityManager, TransactionDefinition definition)
This implementation invokes the standard JPA Transaction.begin method.
void cleanupTransaction(Object transactionData)
This implementation does nothing, since the default beginTransaction implementation does not require any cleanup.
ConnectionHandle getJdbcConnection(EntityManager entityManager, boolean readOnly)
This implementation always returns null, indicating that no JDBC Connection can be provided.
Object prepareTransaction(EntityManager entityManager, boolean readOnly, String name)
Prepare a JPA transaction, applying the specified semantics.
DataAccessException translateExceptionIfPossible(RuntimeException ex)
This implementation delegates to EntityManagerFactoryUtils.
Protected Methods
Session getSession(EntityManager em)
[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

Public Constructors

public HibernateJpaDialect ()

Public Methods

public Object beginTransaction (EntityManager entityManager, TransactionDefinition definition)

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.

Parameters
entityManager the EntityManager to begin a JPA transaction on
definition the Spring transaction definition that defines semantics
Returns
Throws
PersistenceException
SQLException
TransactionException

public void cleanupTransaction (Object transactionData)

This implementation does nothing, since the default beginTransaction implementation does not require any cleanup.

Parameters
transactionData arbitrary object that holds transaction data, if any (as returned by beginTransaction or prepareTransaction)

public ConnectionHandle getJdbcConnection (EntityManager entityManager, boolean readOnly)

This implementation always returns null, indicating that no JDBC Connection can be provided.

Parameters
entityManager 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
SQLException

public Object prepareTransaction (EntityManager entityManager, boolean readOnly, String name)

Prepare a JPA transaction, applying the specified semantics. Called by EntityManagerFactoryUtils when enlisting an EntityManager in a JTA transaction.

An implementation can apply the read-only flag as flush mode. In that case, a transaction data object can be returned that holds the previous flush mode (and possibly other data), to be reset in cleanupTransaction.

Implementations can also use the Spring transaction name, as exposed by the passed-in TransactionDefinition, to optimize for specific data access use cases (effectively using the current transaction name as use case identifier).

Parameters
entityManager the EntityManager to begin a JPA transaction on
readOnly whether the transaction is supposed to be read-only
name the name of the transaction (if any)
Returns
  • an arbitrary object that holds transaction data, if any (to be passed into cleanupTransaction)
Throws
PersistenceException

public DataAccessException translateExceptionIfPossible (RuntimeException ex)

This implementation delegates to EntityManagerFactoryUtils.

Parameters
ex a RuntimeException thrown
Returns
  • the corresponding DataAccessException (or null if the exception could not be translated, as in this case it may result from user code rather than an actual persistence problem)

Protected Methods

protected Session getSession (EntityManager em)