Bonjour,
J'essaye de mettre en pratique le design pattern DAO, mais je rencontre quelques difficultés.
Je travaille sur un site censé (entre autres) géolocaliser des véhicules munis de boîtiers GPS. Une BDD récupère les données que ces boîtiers envoient, mettons que cette partie récupération fonctionne.
Je vous décris rapidement une partie simplifiée de ma base :
Releve(r_id_releve, #id_vehicule, date_releve)
ReleveGps(#g_id_releve, latitude, longitude)
Vehicule(id_vehicule, #id_boitier, immatriculation)
Sur ma carte, je veux afficher un ensemble de points, concernant un véhicule, aux bonnes positions, indiquant l'heure de passage et l'immatriculation du véhicule, d'un point de vue SQL, je ferai un truc du genre :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT `date_releve`, `latitude`, `longitude`, `immatriculation` FROM `releve` JOIN `releve_gps` ON `r_id_releve`=`g_id_releve` NATURAL JOIN `vehicule`
J'ai créé mes objets suivant le DP DAO (ou ce que j'en ai compris), avec les méthodes CRUD, j'ai donc :
* ReleveDAO
* ReleveGpsDAO
* VehiculeDAO
Déjà, je ne me trompe pas sur ce point ?
Moi ce que je veux, c'est donc un objet Position, du genre :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Position { private $date_releve; private $latitude; private $longitude; private $immatriculation; ... }
Comment et où est-ce que je construis cet objet ?
Est-ce que je construit un VehiculeDAO, puis avec son id un ReleveDAO, puis avec son id un ReleveGpsDAO, je récupère les données des trois et je les met dans Position ? Ce qui me paraît perdre l'avantage du SQL et notamment des jointures.
Est-ce qu'il faut un objet PositionDAO, dont la création se ferait avec le code SQL que j'a décrit plus haut ?
Si c'est cette dernière solution, alors qu'est-ce qui devient mon objet métier ?
J'espère que ce n'est pas trop embrouillé et je vous remercie d'avance.
PS 1: J'ai suivi, entre autres, le cours sur Le design pattern DAO de dvp.
PS 2: Je code en php, mais vous pouvez me répondre dans un autre langage si vous voulez.
[Edit] Orthographe
Partager