-
une dao par table ?
Bonjour,
J'ai une question à propos des DAO à laquelle je ne parviens pas à trouver de réponse précise en parcourant le net et les forums.
J'utilise Java et JDBC pour me connecter à ma base de données.
Pour fixer les idées, considérons un exemple bidon de carnet d'adresses, avec deux entités : "groupe" et "personne".
Du côté de ma base de données, je crée une table "groupe", une table "personne", et une troisième table pour la relation entre les deux, sachant qu'un groupe peut contenir plusieurs personnes et qu'une personne peut appartenir à plusieurs groupes (relation n-n).
Du côté Java, j'ai une classe Groupe et une classe Personne. La classe groupe compte parmi ses attributs une liste de personnes, de type Collection.
Ma question est dès lors la suivante : quelle est la meilleure manière de créer mes DAO ?
J'ai dans l'idée de créer une DAO par entité : "GroupeDAO" et "PersonneDAO". Mais alors, dans certains cas, ma DAO "GroupeDAO" accède à la DAO "PersonneDAO". Est-ce une manière correcte de procéder ? De plus, faut-il que je crée une DAO pour la relation Groupe-Personne ?
Comment procéder avec JDBC, sans utiliser de solution de type Hibernate, qui m'a l'air assez lourde à mettre en place, sachant que j'ai peu de temps devant moi pour l'apprendre ?
Merci d'avance pour vos réponses,
Nicolas.
-
si tu fais un dao par table ça peut être bien, mais c'est juste cosmétique
à l'usage tu verras que chaque dao contiendras des méthodes propres pour l'insertion et la mise à jour dans leurs tables respectives, mais pour les selects avec jdbc, tu réutiliseras pas les méthodes de personnesDAO dans GroupesDAO, tu feras directement dans GroupeDAO une requette avec une jointure entre personnes, groupes et la table d'association.
Les insertions dans la table de liaison je les ferait pour ma part dans le GroupeDAO.
Sinon vu que ce que tu veux faire est à priori simple, et si tu connais pas trop JDBC plus que hybernate j'utiliserai hybernate directement à ta place.
-
OK merci pour ta réponse, cela répond à ma question :-)