Dans l'écriture des entités, la récupération des opérations est en mode EAGER
dans l'entité CompteBancaire.
Quand vous faites afficher la liste des CompteBancaire
, l'entity manager va donc récupérer les OpérationBancaire
de chaque CompteBancaire
. Pour chaque CompteBancaire
il lance donc un select pour les récupérer.
Le premier select (il est en fait lancé 2 fois pour des raisons techniques liées à l'affichage de la table) :
SELECT ID, NOM, SOLDE, VERSION FROM COMPTEBANCAIRE
Les selects suivants (le "?" sera remplacé par l'id de chaque CompteBancaire) :
SELECT t1.ID, t1.DATEOPERATION, t1.DESCRIPTION, t1.MONTANT FROM COMPTEBANCAIRE_OPERATIONBANCAIRE t0, OPERATIONBANCAIRE t1 WHERE ((t0.CompteBancaire_ID = ?) AND (t1.ID = t0.operations_ID))
C'est le problème bien connu dit des "N + 1 selects" (voir cours).
Le danger est que ce problème peut passer inaperçu puisque les N selects sont lancés par l'entity manager, sans selects explicites dans votre code.