Bonjour,
je développe une application de type treeview-listview en lien avec une base de données MySQL.
J'ai des problèmes de performance quand je veux récupérer une liste d'objet.
Pour mieux expliquer voici un exemple :
Dans un élevage, il y a des animaux auxquels on peut administrer des traitements vétérinaires.
J'ai donc :
- Une Classe Animal
- Une Classe Personne
- Une Classe Produit
- Une Classe Traitement avec comme attribut Animal, Personne et Produit. Le traitement se fait sur un Animal par une Personne en utilisant un Produit.
Dans mon application, quand je suis sur le niveau Animal et que je veux afficher la liste des ses traitements, j'appelle dans ma classe TraitementDAO la méthode getTraitementsByAnimal() :
- une première requête se lance pour avoir la liste des traitements
et ensuite, afin d'alimenter complétement les objets Traitement de la liste que je vais retourner : je lance, pour chaque traitement une requête pour récupérer les informations de la personne et une requête pour récupérer les informations du produit. Cela fait donc : 1 + 2n requêtes (n étant le nombre de traitements). Si j'ai 10 traitements : je lance donc 21 requêtes pour afficher mes traitements.
D'où des performance pas terrible.
Quel conseil pouvez-vous me donner ?
- est ce que je dois faire les jointures vers les les tables Personne et Produit dès ma première requête ?
- est-ce que l'utilisation d'un Framework O/R permet de résoudre ce problème
- est-ce que je m'y prend comme un manche et qu'il faut faire autrement ?
Merci pour vos réponses.
Partager