0

Hier ist ein Beispiel, in dem ich JdbcTemplate verwende. Meine Frage doMultipleCalls() scheitert bei Schritt 3 aufgrund von runTimeException, wird alles Rollback erhalten. Ich habe @Transactional Anmerkung nur zu doMultipleCalls, aber nicht zu anderen. Wird dieselbe Transaktionssitzung für alle Benutzer gleichzeitig verwendet? Wenn nicht, wie die gleiche Transaktion Sitzung übergeben?Spring-Transaktions-Rollback mit @Transaction-Annotation mit Hilfe von jdbcTemplates

@Component 
public class MyRespository { 

@Autowired 
JdbcTemplate template 

@Transactional 
public void doMutlipleCalls() { 
    callUpdate(); //1 
    callInsert(); //2 
    callDelete(); //3 
} 

callUpdate() { 
    template.query(...) 
} 

callInsert() { 
    template.query(...) 
} 

callDelete() { 
    template.query(..) 
} 

} 

Antwort

1

ist die gleiche Transaktionssitzung über alle von ihnen geteilt?

Ja. Die Transaktion wird vor dem Eingeben der doMultipleCalls()-Methode begonnen und ist abgeschlossen, sobald sie zurückgegeben wird.

+0

also würde bedeuten, wenn einer der Methodenaufruf innerhalb 'doMultipleCalls' (sagen 3) RunTimeException wirft, Anruf 1 und 2 sind zurückgerollt richtig? –

+0

Rechts. Jede ungeprüfte Ausnahme führt dazu, dass die Transaktion zurückgesetzt wird –

1

Wenn Sie Spring jdbc mit Transaktion verwenden, verhält es sich genauso wie mit jpa. Ihre Aktionen sind unter der gleichen Transaktion verpackt.

Überprüfen Sie diese article.