J'aimerais comprendre l'utilité d'avoir une transaction spring avec Propagation Supports. La docs java mentionne que si la méthode qui a @Transactional(propagation = Propagation.SUPPORTS)
est appelée à l'intérieur d'une transaction, elle prend en charge la transaction, mais si aucune transaction n'existe, la méthode est exécutée de manière non transactionnelle.
N'est-ce pas déjà le comportement des transactions de Spring indépendamment de Propagation.SUPPORTS
?
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
Dans l'exemple de code ci-dessus, indépendamment du fait que methodWithSupportsTx()
tiene @Transactional(propagation = Propagation.SUPPORTS)
il serait exécuté dans une transaction selon que l'annotation methodWithRequiredTx()
tiene @Transactional
annotation, n'est-ce pas ?
Alors, quel est le besoin ou l'utilité d'avoir un niveau de propagation SUPPORTS ?