Middle+
Hoeveel transacties worden geopend als in een klasse met twee methoden, elk met @Transactional propagation REQUIRES_NEW, en de eerste methode de tweede aanroept?
sobes.tech AI
Antwoord van AI
Bij gebruik van de @Transactional-annotatie met propagation = REQUIRES_NEW wordt elke methode uitgevoerd in zijn eigen aparte transactie. Wanneer de eerste methode wordt aangeroepen, wordt de eerste transactie geopend. Wanneer de tweede methode wordt aangeroepen vanuit de eerste, wordt de huidige transactie gepauzeerd en wordt een nieuwe transactie geopend voor de tweede methode. Na voltooiing van de tweede methode wordt deze transactie gesloten en wordt de eerste hervat.
In totaal worden er 2 transacties geopend: één voor de eerste methode en één voor de tweede.
Voorbeeld:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
// transactie 1
methodTwo(); // aanroep van de tweede methode
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
// transactie 2
}