**Le Scénario Classique
Le Développeur : "J’ai bien fait tous mes save(), tout est en base de** données, je peux partir en pause."
Spring Framework : "C'est ce que tu crois. Une RuntimeException vient de surgir à la dernière ligne... Rollback général pour tout le monde !"
- L'approche sans @Transactional : Le Far West C'est le mode par défaut si vous oubliez l'annotation.
Le comportement : Chaque opération est atomique et immédiate.
Le point positif : Vos données sont sauvegardées instantanément quoi qu'il arrive.
Le point négatif : Bonne chance pour gérer la cohérence. Si votre processus plante au milieu, vous vous retrouvez avec une base de données "en morceaux" (un utilisateur créé mais sans son profil associé, par exemple).
- L'approche avec @Transactional : Le Parent Strict C'est la configuration standard pour sécuriser vos processus métier.
Le comportement : C'est le pacte du "Tout ou Rien".
Le point positif : La cohérence est absolue. On ne laisse jamais de données orphelines.
Le point négatif : C'est frustrant. Une seule petite erreur de validation à la toute fin du processus déclenche le protocole nucléaire : Spring efface absolument toute votre progression depuis le début de la méthode.
- Le Plot Twist : REQUIRES_NEW entre dans le chat Parfois, vous avez besoin de flexibilité au sein d'une grande transaction.
Java
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveIndependentData(Data data) {
repository.save(data);
}
Le comportement : Chaque sauvegarde s'exécute dans sa propre petite bulle indépendante.
Le résultat : Une erreur survient sur un élément spécifique ? Ce n'est plus un désastre global. Le fautif est ignoré, mais tout le reste de votre travail survit et reste bien au chaud dans la base de données.
Moralité technique
@Transactional classique agit comme un parent strict : si un seul enfant fait une bêtise, tout le groupe est privé de dessert.
REQUIRES_NEW agit comme un parent cool : il laisse chacun assumer ses erreurs sans gâcher la journée des autres.
Le conseil du jour :
Ne laissez pas une exception isolée effacer des heures de traitement de données. Apprenez à isoler vos transactions stratégiques pour garder votre base propre et votre santé mentale intacte.
Top comments (0)