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)