
Envoyé par
johannsan
Question 1/
Comment, avec le pattern DAO, pouvons nous faire une jointure entre la table VILLE et pays.
En effet, si on recherche toutes les villes, puis pour toutes les villes on fait un find(pays de la ville), cela fait perdre tout l'interet des jointures SQL car on va faire N+1 requetes au lieu d'une?
Tu fais une requête (avec jointure bien sur) qui te remonte les champs que tu veux binder puis tu parcours ton resultSet pour créer tes objets. Dans ton cas tu es en SQL pur donc pas de surprise.
De même, dans la classe villeDAO, nous ne somme pas sensé avoir accès aux noms des champs de la classe paysDAO car ils sont privés...
Pour moi ton objet ville doit contenir un objet pays => ville.getPays.getLibelle(). Après je ne suis pas sur d'avoir tout compris mais ton objet villeDAO te retourne des objets ville et idem pour pays. Et bien sur on utilise les getters et setters
Je pense que tu veux confond les champs qui correspondent aux entêtes de colonnes en BDD et les attributs respectifs des tes objets.
Question 2/
Dans l'exemple ci-dessus, le pays contient une liste de pays, mais la ville ne contient pas la référence au pays.
--> comment décider si ces références doivent être dans les deux sens ou que dans un sens? C'est toi qui crée tes objets donc si tu veux remplir une liste
De même, si on gère ces références dans tous les sens, on voit bien qu'à force de charger tous les objets qui sont liés, on peut aller très loin (car chaque objet va charger son objet "voisin".
Comment expliciter en java qu'on ne doit pas charger tous les objets en cascade? Hibernate, JPA
De même si on décide de ne pas les charger tous? comment savoir si on l'a chargé ou pas (afin de le charger s'il ne l'est pas), et afficher une valeur null à tord...
Merci d'avance pour vos réponses
Partager