Class JdbcTransactionManager
- All Implemented Interfaces:
- Serializable,- InitializingBean,- PlatformTransactionManager,- ResourceTransactionManager,- TransactionManager
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 SummaryNested classes/interfaces inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManagerAbstractPlatformTransactionManager.SuspendedResourcesHolder
- 
Field SummaryFields inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManagerlogger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
- 
Constructor SummaryConstructorsConstructorDescriptionCreate a new JdbcTransactionManager instance.JdbcTransactionManager(DataSource dataSource) Create a new JdbcTransactionManager instance.
- 
Method SummaryModifier and TypeMethodDescriptionvoidEagerly initialize the exception translator, if demanded, creating a default one for the specified DataSource if none set.Return the exception translator for this instance.booleanReturn whether to lazily initialize the SQLExceptionTranslator for this transaction manager.voidsetDatabaseProductName(String dbName) Specify the database product name for the DataSource that this transaction manager uses.voidsetExceptionTranslator(SQLExceptionTranslator exceptionTranslator) Set the exception translator for this instance.voidsetLazyInit(boolean lazyInit) Set whether to lazily initialize the SQLExceptionTranslator for this transaction manager, on first encounter of an SQLException.protected RuntimeExceptiontranslateException(String task, SQLException ex) This implementation attempts to use theSQLExceptionTranslator, falling back to aTransactionSystemException.Methods inherited from class org.springframework.jdbc.datasource.DataSourceTransactionManagerdoBegin, doCleanupAfterCompletion, doCommit, doGetTransaction, doResume, doRollback, doSetRollbackOnly, doSuspend, getDataSource, getResourceFactory, isEnforceReadOnly, isExistingTransaction, obtainDataSource, prepareTransactionalConnection, setDataSource, setEnforceReadOnlyMethods inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManagercommit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, registerAfterCompletionWithExistingTransaction, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, shouldCommitOnGlobalRollbackOnly, suspend, triggerBeforeCommit, triggerBeforeCompletion, useSavepointForNestedTransactionMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.transaction.PlatformTransactionManagercommit, getTransaction, rollback
- 
Constructor Details- 
JdbcTransactionManagerpublic JdbcTransactionManager()Create a new JdbcTransactionManager instance. A DataSource has to be set to be able to use it.
- 
JdbcTransactionManagerCreate a new JdbcTransactionManager instance.- Parameters:
- dataSource- the JDBC DataSource to manage transactions for
 
 
- 
- 
Method Details- 
setDatabaseProductNameSpecify the database product name for the DataSource that this transaction manager uses. This allows to initialize an SQLErrorCodeSQLExceptionTranslator without obtaining a Connection from the DataSource to get the meta-data.- Parameters:
- dbName- the database product name that identifies the error codes entry
- See Also:
 
- 
setExceptionTranslatorSet the exception translator for this instance.If no custom translator is provided, a default SQLErrorCodeSQLExceptionTranslatoris used which examines the SQLException's vendor-specific error code.
- 
getExceptionTranslatorReturn the exception translator for this instance.Creates a default SQLErrorCodeSQLExceptionTranslatorfor the specified DataSource if none set.
- 
setLazyInitpublic void setLazyInit(boolean lazyInit) Set whether to lazily initialize the SQLExceptionTranslator for this transaction manager, on first encounter of an SQLException. Default is "true"; can be switched to "false" for initialization on startup.Early initialization just applies if afterPropertiesSet()is called.- See Also:
 
- 
isLazyInitpublic boolean isLazyInit()Return whether to lazily initialize the SQLExceptionTranslator for this transaction manager.- See Also:
 
- 
afterPropertiesSetpublic void afterPropertiesSet()Eagerly initialize the exception translator, if demanded, creating a default one for the specified DataSource if none set.- Specified by:
- afterPropertiesSetin interface- InitializingBean
- Overrides:
- afterPropertiesSetin class- DataSourceTransactionManager
 
- 
translateExceptionThis implementation attempts to use theSQLExceptionTranslator, falling back to aTransactionSystemException.- Overrides:
- translateExceptionin class- DataSourceTransactionManager
- Parameters:
- task- the task description (commit or rollback)
- ex- the SQLException thrown from commit/rollback
- Returns:
- the translated exception to throw, either a
 DataAccessExceptionor aTransactionException
- See Also:
 
 
-