@Transactional : Les 4 règles d'or que tout développeur Java doit connaître 👇
Vous utilisez @Transactional mais vous tombez dans ces pièges classiques ?
Voici les 4 points essentiels expliqués simplement :
1. Seulement les méthodes publiques
L'annotation ne fonctionne que sur les méthodes publiques. Si vous mettez @Transactional sur une méthode private ou protected, elle sera tout simplement ignorée.
Pourquoi ? Spring utilise des proxies qui ne "voient" que les méthodes publiques.
2. Rollback automatique uniquement sur les erreurs graves
Par défaut, seules les RuntimeException déclenchent un rollback. Les exceptions "normales" comme IOException n'annulent pas la transaction.
Solution : Utilisez rollbackFor pour spécifier exactement quelles erreurs doivent annuler la transaction.
3. Pas d'auto-invocation
Si une méthode de votre classe appelle une autre méthode de la même classe, @Transactional ne marchera pas sur la méthode appelée.
Pourquoi ? L'appel interne contourne complètement le proxy Spring.
4. Personnalisez avec rollbackFor
Vous pouvez contrôler précisément quelles exceptions doivent déclencher un rollback en utilisant le paramètre rollbackFor.
Astuce : Testez toujours vos transactions avec des cas d'erreur pour vérifier qu'elles se comportent comme attendu.
#Spring #Java #Développement #Transaction #SpringBoot
Développeur Fullstack Junior | Node.js • React • Angular • Java | Passionné par la création de solutions digitales innovantes
13 days ago
Super rappel 👌 ! Beaucoup de devs pensent que @Transactional “fait tout tout seul”, alors que les subtilités comme rollbackFor ou l’auto-invocation peuvent vraiment piéger.
Ingénieur Logiciel | Java • Spring Boot | Certifié Java SE 21 & CKAD
15 days ago
Merci Philémon GLOBLÉHI pour ce partage.
À noter qu’à partir de Spring 6.0, l’annotation @Transactional peut également être appliquée à des méthodes protected ou package-private lorsqu’on utilise un proxy basé sur les classes (CGLIB proxy).