Class JdbcTransactionManager

java.lang.Object
org.springframework.transaction.support.AbstractPlatformTransactionManager
org.springframework.jdbc.datasource.DataSourceTransactionManager
org.springframework.jdbc.support.JdbcTransactionManager
All Implemented Interfaces:
Serializable, org.springframework.beans.factory.InitializingBean, org.springframework.transaction.ConfigurableTransactionManager, org.springframework.transaction.PlatformTransactionManager, org.springframework.transaction.support.ResourceTransactionManager, org.springframework.transaction.TransactionManager

public class JdbcTransactionManager extends DataSourceTransactionManager
JdbcAccessor-aligned subclass of the plain DataSourceTransactionManager, adding common JDBC exception translation for the commit and rollback step. Typically used in combination with JdbcTemplate which applies the same SQLExceptionTranslator infrastructure by default.

Exception translation is specifically relevant for commit steps in serializable transactions (e.g. on Postgres) where concurrency failures may occur late on commit. This allows for throwing ConcurrencyFailureException to callers instead of TransactionSystemException.

Analogous to HibernateTransactionManager and JpaTransactionManager, this transaction manager may throw DataAccessException from AbstractPlatformTransactionManager.commit(org.springframework.transaction.TransactionStatus) and possibly also from AbstractPlatformTransactionManager.rollback(org.springframework.transaction.TransactionStatus). Calling code should be prepared for handling such exceptions next to TransactionException, which is generally sensible since TransactionSynchronization implementations may also throw such exceptions in their flush and beforeCommit phases.

Since:
5.3
Author:
Juergen Hoeller, Sebastien Deleuze
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager

    org.springframework.transaction.support.AbstractPlatformTransactionManager.SuspendedResourcesHolder
  • Field Summary

    Fields inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager

    logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new JdbcTransactionManager instance.
    Create a new JdbcTransactionManager instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Eagerly initialize the exception translator, if demanded, creating a default one for the specified DataSource if none set.
    Return the exception translator to use for this instance, creating a default if necessary.
    boolean
    Return whether to lazily initialize the SQLExceptionTranslator for this transaction manager.
    void
    Specify the database product name for the DataSource that this transaction manager operates on.
    void
    Set the exception translator for this transaction manager.
    void
    setLazyInit(boolean lazyInit)
    Set whether to lazily initialize the SQLExceptionTranslator for this transaction manager, on first encounter of an SQLException.
    This implementation attempts to use the SQLExceptionTranslator, falling back to a TransactionSystemException.

    Methods inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager

    commit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionExecutionListeners, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, prepareForCommit, prepareSynchronization, registerAfterCompletionWithExistingTransaction, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionExecutionListeners, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, shouldCommitOnGlobalRollbackOnly, suspend, triggerBeforeCommit, triggerBeforeCompletion, useSavepointForNestedTransaction

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.springframework.transaction.ConfigurableTransactionManager

    addListener

    Methods inherited from interface org.springframework.transaction.PlatformTransactionManager

    commit, getTransaction, rollback