Set whether to prepare the underlying JDBC Connection of a transactional
Hibernate Session, that is, whether to apply a transaction-specific
isolation level and/or the transaction's read-only flag to the underlying
JDBC Connection.

Constructor Detail

HibernateJpaDialect

public HibernateJpaDialect()

Method Detail

setPrepareConnection

public void setPrepareConnection(boolean prepareConnection)

Set whether to prepare the underlying JDBC Connection of a transactional
Hibernate Session, that is, whether to apply a transaction-specific
isolation level and/or the transaction's read-only flag to the underlying
JDBC Connection.

Default is "true". If you turn this flag off, JPA transaction management
will not support per-transaction isolation levels anymore. It will not call
Connection.setReadOnly(true) for read-only transactions anymore either.
If this flag is turned off, no cleanup of a JDBC Connection is required after
a transaction, since no Connection settings will get modified.

NOTE: The default behavior in terms of read-only handling changed
in Spring 4.1, propagating the read-only status to the JDBC Connection now,
analogous to other Spring transaction managers. This may have the effect
that you're running into read-only enforcement now where previously write
access has accidentally been tolerated: Please revise your transaction
declarations accordingly, removing invalid read-only markers if necessary.

setJdbcExceptionTranslator

Set the JDBC exception translator for Hibernate exception translation purposes.

Applied to any detected SQLException root cause of a Hibernate
JDBCException, overriding Hibernate's own SQLException translation
(which is based on a Hibernate Dialect for a specific target database).

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.

prepareTransaction

Prepare a JPA transaction, applying the specified semantics. Called by
EntityManagerFactoryUtils when enlisting an EntityManager in a JTA transaction
or a locally joined transaction (e.g. after upgrading an unsynchronized
EntityManager to a synchronized one).

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 to optimize for
specific data access use cases (effectively using the current transaction
name as use case identifier).