8 développeurs sur 10 commettent cette erreur en Spring Boot 👇
Hier, en relisant du code legacy, je suis tombé sur ce pattern qui me fait encore grimacer. Une erreur tellement répandue qu'elle est devenue invisible.
Le problème ? Des développeurs qui appellent systématiquement .save() après chaque modification d'entité dans une méthode transactionnelle.
Avec Spring Data JPA et @Transactional, votre EntityManager surveille déjà tous les objets récupérés depuis la base. Dès que vous modifiez une propriété, il marque l'entité comme "dirty". Au moment du commit de transaction, il génère automatiquement les requêtes UPDATE nécessaires.
C'est ce qu'on appelle le "dirty checking" d'Hibernate.
En gros, vous payez le prix de deux opérations :
✅ La vérification automatique (qui aura lieu de toute façon)
✅ Votre .save() manuel (qui force une synchronisation prématurée)
Cette subtilité change la donne quand vous traitez des milliers d'entités. J'ai vu des gains de performance de 30% juste en nettoyant ces appels redondants.
---
Je suis Philémon GLOBLÉHI, consultant Java, j'accompagne les entreprises dans leurs projets stratégiques :
- Développement & architecture logiciel
- Modernisation de systèmes legacy
- Conception de microservices robustes
- Coaching & montée en compétences des équipes
Un projet en tête ? Réservez un rendez-vous : https://lnkd.in/ecRArCmt
Ou envoyez-moi un message en DM
Développeur web fullstack | Java Spring Boot | TypeScript React
3 months ago
Bonjour Philémon ! Si je comprends bien, c'est donc l'annotation Transactional sur la méthode qui s'assure que return commande; fasse la sauvegarde de l'entité via JPA?