public class JdbcTransactionManager extends DataSourceTransactionManager
JdbcAccessor - プレーンな DataSourceTransactionManager のサブクラスを揃え、コミットとロールバックのステップに共通の JDBC 例外変換を追加します。通常、デフォルトで同じ SQLExceptionTranslator インフラストラクチャを適用する JdbcTemplate と組み合わせて使用されます。 例外の変換は、シリアライズ可能なトランザクション(たとえば、Postgres)でのコミットステップに特に関連します。この場合、コミットの遅延が同時実行の失敗の原因となる可能性があります。これにより、TransactionSystemException の代わりに ConcurrencyFailureException を呼び出し元にスローできます。
HibernateTransactionManager および JpaTransactionManager と同様に、このトランザクションマネージャーは AbstractPlatformTransactionManager.commit(org.springframework.transaction.TransactionStatus) から DataAccessException をスローし、AbstractPlatformTransactionManager.rollback(org.springframework.transaction.TransactionStatus) からもスローする可能性があります。呼び出しコードは、TransactionException の隣でそのような例外を処理するために準備する必要があります。これは、TransactionSynchronization 実装が flush および beforeCommit フェーズでそのような例外をスローする場合があるため、これは一般的に賢明です。
DataSourceTransactionManager, DataSourceTransactionManager.setDataSource(javax.sql.DataSource), setExceptionTranslator(org.springframework.jdbc.support.SQLExceptionTranslator), 連載形式 AbstractPlatformTransactionManager.SuspendedResourcesHolderlogger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION| コンストラクターと説明 |
|---|
JdbcTransactionManager() 新しい JdbcTransactionManager インスタンスを作成します。 |
JdbcTransactionManager(DataSourceSE dataSource) 新しい JdbcTransactionManager インスタンスを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | afterPropertiesSet() 必要に応じて例外トランスレータを積極的に初期化し、何も設定されていない場合は指定された DataSource のデフォルトのトランスレータを作成します。 |
SQLExceptionTranslator | getExceptionTranslator() このインスタンスの例外トランスレータを返します。 |
boolean | isLazyInit() このトランザクションマネージャーの SQLExceptionTranslator を遅延初期化するかどうかを返します。 |
void | setDatabaseProductName(StringSE dbName) このトランザクションマネージャーが使用する DataSource のデータベース製品名を指定します。 |
void | setExceptionTranslator(SQLExceptionTranslator exceptionTranslator) このインスタンスの例外トランスレーターを設定します。 |
void | setLazyInit(boolean lazyInit)SQLException が最初に発生したときに、このトランザクションマネージャーの SQLExceptionTranslator を遅延初期化するかどうかを設定します。 |
protected RuntimeExceptionSE | translateException(StringSE task, SQLExceptionSE ex) この実装は SQLExceptionTranslator の使用を試み、TransactionSystemException にフォールバックします。 |
doBegin, doCleanupAfterCompletion, doCommit, doGetTransaction, doResume, doRollback, doSetRollbackOnly, doSuspend, getDataSource, getResourceFactory, isEnforceReadOnly, isExistingTransaction, obtainDataSource, prepareTransactionalConnection, setDataSource, setEnforceReadOnlycommit, 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, useSavepointForNestedTransactioncloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEcommit, getTransaction, rollbackpublic JdbcTransactionManager()
public JdbcTransactionManager(DataSourceSE dataSource)
dataSource - トランザクションを管理する JDBC DataSourcepublic void setDatabaseProductName(StringSE dbName)
dbName - エラーコードエントリを識別するデータベース製品名 JdbcAccessor.setDatabaseProductName(java.lang.String), SQLErrorCodeSQLExceptionTranslator.setDatabaseProductName(java.lang.String), DatabaseMetaData.getDatabaseProductName()SEpublic void setExceptionTranslator(SQLExceptionTranslator exceptionTranslator)
カスタムトランスレータが提供されていない場合、SQLException のベンダー固有のエラーコードを調べるデフォルトの SQLErrorCodeSQLExceptionTranslator が使用されます。
public SQLExceptionTranslator getExceptionTranslator()
何も設定されていない場合、指定された DataSource のデフォルト SQLErrorCodeSQLExceptionTranslator を作成します。
public void setLazyInit(boolean lazyInit)
初期化は、afterPropertiesSet() が呼び出された場合にのみ適用されます。
public boolean isLazyInit()
public void afterPropertiesSet()
InitializingBean の afterPropertiesSet DataSourceTransactionManager の afterPropertiesSet protected RuntimeExceptionSE translateException(StringSE task, SQLExceptionSE ex)
SQLExceptionTranslator の使用を試み、TransactionSystemException にフォールバックします。DataSourceTransactionManager の translateException task - タスクの説明 (コミットまたはロールバック)ex - コミット / ロールバックからスローされる SQLExceptionDataAccessException または TransactionExceptiongetExceptionTranslator(), DataSourceTransactionManager.translateException(java.lang.String, java.sql.SQLException)