Transaktionen

Erklärt die MongoDB ClientSession-Transaktion von getTxJob, die Sitzungsweitergabe im Reactor-Kontext, die Verantwortung für Wiederholungen und die Grenzen der Spring-Transaktion.


getTxJob

java
Mono<String> result = dsl.getTxJob(
    MongoTemplateName.FRONT,
    () -> dsl
        .executeEntity(User.class, MongoTemplateName.FRONT)
        .save(user)
        .then(
            dsl.executeEntity(Audit.class, MongoTemplateName.FRONT)
                .save(audit)
        )
        .thenReturn("committed")
);

getTxJob(...) öffnet die ClientSession mit MongoExecutionContext.startSession(), startet die Transaktion und bindet die Sitzung an den Reactor-Kontext. Bei erfolgreichem Abschluss wird ein Commit durchgeführt, bei Fehlern/Abbrüchen wird die aktive Transaktion abgebrochen, und am Ende wird die Sitzung geschlossen.

Sitzungsbereich

Die Transaktionssitzung wird nur an die gleiche DSL-Ausführung von MongoExecutionContext#getSessionScope() weitergegeben. Der Standard DriverMongoExecutionContext verwendet seinen eigenen MongoClient als Sitzungsbereich.

Die Verantwortung für das Transaktions-Retry liegt beim Aufrufer.

getTxJob(...) führt kein automatisches Retry bei MongoDB-Transaktionsfehlern wie TransientTransactionError durch. Ob und wie oft ein Retry erfolgt, wird von der Idempotenz der Operation, externen Nebeneffekten und den Geschäftsregeln der aufrufenden Anwendung entschieden.

Grenzen zu Spring-Transaktionen

Spring @Transactional / TransactionalOperator

Grenzen der Transaktionen/Sitzungen, die von Spring Data MongoDB verwaltet werden.

ReactiveMongoDsl#getTxJob

DSL startet direkt ClientSession und übergibt es an den Reactor Context.

© 2026 Byeolnaerim. Alle Rechte vorbehalten.EinführungDatenschutzrichtlinie