Criteria et optimisation avec des Fetch
Bonjour,
J'ai un traitement Batch avec Hibernate qui dure trop longtemps.
Avec les logs je me suis apercu que je ramenais des grappes d'objets dont je n'ai rien a faire.
Je cherche donc a diminuer au Maximum mes requetes Criteria, et donc comment optimiser.
Je Veux uniquement ramener les libelles de la Class B dans mon criteria sans ramener le reste de la grappe
Ici uniquement la classe A et les libelles des deux classes B sans les classes C et D .
J'ai
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
Pour l instant je fais un
Criteria crit = ((Session) getEntityManager().getDelegate()).createCriteria(A.class);
crit.setFetchMode("filsB2.maListe", FetchMode.SELECT);
crit.setFetchMode("filsB1.maListe", FetchMode.SELECT);
crit.setFetchMode(COLLECTION A EVITER DE CHARGER, FetchMode.SELECT);
return crit.list();
Classe A
{
String nom;
List l1;
B filsB1;
B filsB2;
int x;
D maclasse D;
}
Class B
{
String libelle;
List maListe;
Class C;
}
Class C
{
List lc;
String nom;
int xx;
}
Class D
{
List ld01;
List ld02;
String prenom
} |
Mais pour chaque collection de chaque classe "fille", je dois mettre le fetch.select , je trouve cela un peu lourd ?
Il a t il mieux Merci ??