クラス 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 classMongoResourceHolderを表す 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, @Nullable com.mongodb.TransactionOptions options) 新しいトランザクションを開始するときに、指定されたoptions(存在する場合) を適用して、指定されたMongoDatabaseFactoryからセッションを取得し、新しいMongoTransactionManagerを作成します。MongoTransactionManager(MongoDatabaseFactory databaseFactory, MongoTransactionOptionsResolver transactionOptionsResolver, MongoTransactionOptions defaultTransactionOptions) 新しいトランザクションを開始するときに、指定されたoptions(存在する場合) を適用して、指定されたMongoDatabaseFactoryからセッションを取得し、新しいMongoTransactionManagerを作成します。メソッドのサマリー
修飾子と型メソッド説明voidprotected voiddoBegin(ObjectSE transaction, TransactionDefinition definition) protected voiddoCleanupAfterCompletion(ObjectSE transaction) protected voiddoCommit(MongoTransactionManager.MongoTransactionObject transactionObject) 指定されたトランザクションの実際のコミットを実行するためのカスタマイズフック。
コミット操作でエラーが発生した場合、MongoDB ドライバーはエラーラベルを保持するMongoExceptionをスローします。protected final voiddoCommit(DefaultTransactionStatus status) protected ObjectSEprotected voidprotected voiddoRollback(DefaultTransactionStatus status) protected voidprotected ObjectSE@Nullable MongoDatabaseFactoryこのインスタンスがトランザクションを管理するMongoDatabaseFactoryを取得します。protected booleanisExistingTransaction(ObjectSE transaction) voidsetDatabaseFactory(MongoDatabaseFactory databaseFactory) このインスタンスがトランザクションを管理するMongoDatabaseFactoryを設定します。voidsetOptions(@Nullable 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
public void setOptions(@Nullable com.mongodb.TransactionOptions options) トランザクションを開始するときに適用するTransactionOptionsを設定します。- パラメーター:
options- null でもかまいません。
getDatabaseFactory
このインスタンスがトランザクションを管理するMongoDatabaseFactoryを取得します。- 戻り値:
- null でもかまいません。
getResourceFactory
- 次で指定:
- インターフェース
ResourceTransactionManagerのgetResourceFactory
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet