クラス MongoTransactionManager
java.lang.ObjectSE
org.springframework.transaction.support.AbstractPlatformTransactionManager
org.springframework.data.mongodb.MongoTransactionManager
- 実装されたすべてのインターフェース:
SerializableSE
、InitializingBean
、ConfigurableTransactionManager
、PlatformTransactionManager
、ResourceTransactionManager
、TransactionManager
public class MongoTransactionManager
extends AbstractPlatformTransactionManager
implements ResourceTransactionManager, InitializingBean
単一の
指定された
標準の
デフォルトでは、コミット操作が失敗すると
MongoDatabaseFactory
の ClientSession
ベースのトランザクションを管理する PlatformTransactionManager
実装。指定された
MongoDatabaseFactory
からの ClientSession
をスレッドにバインドします。Readonly
トランザクションは ClientSession
で動作し、因果一貫性を有効にします。また、start
、commit
、abort
トランザクションも有効にします。標準の
MongoDatabaseFactory.getMongoDatabase()
呼び出しではなく、MongoDatabaseUtils.getDatabase(MongoDatabaseFactory)
を介して MongoDatabase
を取得するには、アプリケーションコードが必要です。MongoTemplate
などの Spring クラスは、この戦略を暗黙的に使用します。デフォルトでは、コミット操作が失敗すると
TransactionSystemException
が発生します。MongoDB リファレンスマニュアルに記載されているように、doCommit(MongoTransactionObject)
をオーバーライドしてコミット操作を再試行しますの動作を実装できます。- 導入:
- 2.1
- 作成者:
- Christoph Strobl, Mark Paluch
- 関連事項:
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明protected static class
MongoResourceHolder
を表す MongoDB 固有のトランザクションオブジェクト。クラス org.springframework.transaction.support.AbstractPlatformTransactionManager から継承されたネストクラス / インターフェース
AbstractPlatformTransactionManager.SuspendedResourcesHolder
フィールドのサマリー
クラス org.springframework.transaction.support.AbstractPlatformTransactionManager から継承されたフィールド
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
コンストラクターの概要
コンストラクターコンストラクター説明Bean スタイルの使用のために新しいMongoTransactionManager
を作成します。MongoTransactionManager
(MongoDatabaseFactory databaseFactory) 指定されたMongoDatabaseFactory
からセッションを取得する新しいMongoTransactionManager
を作成します。MongoTransactionManager
(MongoDatabaseFactory databaseFactory, com.mongodb.TransactionOptions options) 新しいトランザクションを開始するときに、指定されたoptions
(存在する場合) を適用して、指定されたMongoDatabaseFactory
からセッションを取得し、新しいMongoTransactionManager
を作成します。MongoTransactionManager
(MongoDatabaseFactory databaseFactory, MongoTransactionOptionsResolver transactionOptionsResolver, MongoTransactionOptions defaultTransactionOptions) 新しいトランザクションを開始するときに、指定されたoptions
(存在する場合) を適用して、指定されたMongoDatabaseFactory
からセッションを取得し、新しいMongoTransactionManager
を作成します。メソッドのサマリー
修飾子と型メソッド説明void
protected void
doBegin
(ObjectSE transaction, TransactionDefinition definition) protected void
doCleanupAfterCompletion
(ObjectSE transaction) protected void
doCommit
(MongoTransactionManager.MongoTransactionObject transactionObject) 指定されたトランザクションの実際のコミットを実行するためのカスタマイズフック。
コミット操作でエラーが発生した場合、MongoDB ドライバーはエラーラベルを保持するMongoException
をスローします。protected final void
doCommit
(DefaultTransactionStatus status) protected ObjectSE
protected void
protected void
doRollback
(DefaultTransactionStatus status) protected void
protected ObjectSE
このインスタンスがトランザクションを管理するMongoDatabaseFactory
を取得します。protected boolean
isExistingTransaction
(ObjectSE transaction) void
setDatabaseFactory
(MongoDatabaseFactory databaseFactory) このインスタンスがトランザクションを管理するMongoDatabaseFactory
を設定します。void
setOptions
(com.mongodb.TransactionOptions options) トランザクションを開始するときに適用するTransactionOptions
を設定します。クラス 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
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.transaction.ConfigurableTransactionManager から継承されたメソッド
addListener
インターフェース org.springframework.transaction.PlatformTransactionManager から継承されたメソッド
commit, getTransaction, rollback
コンストラクターの詳細
MongoTransactionManager
public MongoTransactionManager()Bean スタイルの使用のために新しいMongoTransactionManager
を作成します。
注意 : インスタンスを使用する前に、db factory
をset
にする必要があります。このコンストラクターを使用して、BeanFactory
経由でMongoTransactionManager
を準備します。
オプションで、ReadConcern
とWriteConcern
を定義してデフォルトのtransaction options
を設定することもできます。MongoTransactionManager
指定されたMongoDatabaseFactory
からセッションを取得する新しいMongoTransactionManager
を作成します。- パラメーター:
databaseFactory
- null であってはなりません。
MongoTransactionManager
public MongoTransactionManager(MongoDatabaseFactory databaseFactory, @Nullable com.mongodb.TransactionOptions options) 新しいトランザクションを開始するときに、指定されたoptions
(存在する場合) を適用して、指定されたMongoDatabaseFactory
からセッションを取得し、新しいMongoTransactionManager
を作成します。- パラメーター:
databaseFactory
- null であってはなりません。options
- null でもかまいません。
MongoTransactionManager
public MongoTransactionManager(MongoDatabaseFactory databaseFactory, MongoTransactionOptionsResolver transactionOptionsResolver, MongoTransactionOptions defaultTransactionOptions) 新しいトランザクションを開始するときに、指定されたoptions
(存在する場合) を適用して、指定されたMongoDatabaseFactory
からセッションを取得し、新しいMongoTransactionManager
を作成します。- パラメーター:
databaseFactory
- null であってはなりません。transactionOptionsResolver
- null であってはなりません。defaultTransactionOptions
- null でもかまいません。- 導入:
- 4.3
メソッドの詳細
doGetTransaction
isExistingTransaction
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のisExistingTransaction
- 例外:
TransactionException
doBegin
protected void doBegin(ObjectSE transaction, TransactionDefinition definition) throws TransactionException - 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoBegin
- 例外:
TransactionException
doSuspend
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoSuspend
- 例外:
TransactionException
doResume
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoResume
doCommit
- 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoCommit
- 例外:
TransactionException
doCommit
protected void doCommit(MongoTransactionManager.MongoTransactionObject transactionObject) throws ExceptionSE 指定されたトランザクションの実際のコミットを実行するためのカスタマイズフック。
コミット操作でエラーが発生した場合、MongoDB ドライバーはエラーラベルを保持するMongoException
をスローします。
デフォルトではこれらのラベルは無視されますが、transient commit errors labels
をチェックしてコミットを再試行することもできます。int retries = 3; do { try { transactionObject.commitTransaction(); break; } catch (MongoException ex) { if (!ex.hasErrorLabel(MongoException.UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL)) { throw ex; } } Thread.sleep(500); } while (--retries > 0);
- パラメーター:
transactionObject
- 決して null にはなりません。- 例外:
ExceptionSE
- 取引エラーが発生した場合。
doRollback
- 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoRollback
- 例外:
TransactionException
doSetRollbackOnly
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoSetRollbackOnly
- 例外:
TransactionException
doCleanupAfterCompletion
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoCleanupAfterCompletion
setDatabaseFactory
このインスタンスがトランザクションを管理するMongoDatabaseFactory
を設定します。- パラメーター:
databaseFactory
- null であってはなりません。
setOptions
トランザクションを開始するときに適用するTransactionOptions
を設定します。- パラメーター:
options
- null でもかまいません。
getDatabaseFactory
このインスタンスがトランザクションを管理するMongoDatabaseFactory
を取得します。- 戻り値:
- null でもかまいません。
getResourceFactory
- 次で指定:
- インターフェース
ResourceTransactionManager
のgetResourceFactory
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet