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.SuspendedResourcesHolder
logger, 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, setEnforceReadOnly
commit, 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, useSavepointForNestedTransaction
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
commit, getTransaction, rollback
public 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
または TransactionException
getExceptionTranslator()
, DataSourceTransactionManager.translateException(java.lang.String, java.sql.SQLException)