Accéder au contenu principal

Articles

Affichage des articles du septembre, 2026

Quand JPA rencontre ses limites, pensez à jOOQ et au MULTISET

Une seule requête, un graphe d'objets complet — ce n'est pas de la magie, c'est du SQL. La base du problème Dans le monde JPA, quand on gère une relation un-à-plusieurs, le chargement LAZY par défaut semble élégant… mais cache une bombe à retardement. Imaginez un scénario e-commerce classique :  Client → Commandes → Lignes de commande → Produits.  Quand vous appelez orderRepository.findAll() , si Open Session in View est activé (plus de  701 allers-retours vers la base de données : 1 requête pour les commandes, 100 pour les clients, 100 pour les lignes, 500 pour les produits. En dev, tout peut bien aller, mais en production il y a risque d'effondrement des performances. Ce n'est pas la faute d'Hibernate. C'est le prix inévitable du modèle de navigation par objets face à des hiérarchies complexes. Limite du join fetch de JPA Beaucoup pensent résoudre le N+1 avec JOIN FETCH . Mais il y a un mur contre lequel tout le monde finit par se cogner : on ne peut pas...