Comment une simple projection Spring Data a divisé par deux le temps de réponse de mes requêtes.
Quand on interroge une base de données via JPA, on a souvent tendance à récupérer toute la structure d’un objet… même quand on n’en a besoin que d’une petite partie. Ce réflexe peut vite coûter cher : chargement inutile en mémoire, latence réseau, surcharge côté base.
Prenons un cas concret : afficher une simple liste des utilisateurs avec leur nom et email. Inutile ici de charger les mots de passe, les rôles, les dates de création, etc. Et pourtant, findAll() ramène tout.
Pour alléger ça, Spring Data propose une approche élégante : les projections d’interface. En définissant une interface ne contenant que les getters des champs utiles, Spring s’occupe de ne sélectionner que ces colonnes en base. Résultat : une requête plus légère, et un traitement plus rapide.
🙌
En fait au delà des champs inutiles c’est le findAll lui meme qui est un anti pattern jpa hibernate et c’est ce pattern qui fait que c’est long une expérience instructive pour comprendre ce qui se passe c’est de regarder les logs hibernate .