IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

UML Discussion :

Accès à la BD


Sujet :

UML

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Accès à la BD
    <modéré par cian> Rajout du TAG + titre modifé pour plus de clareté </ modéré par cian>

    Bonjour,

    J'ai une classe Personne. Dans ma base de donnée la table correspondante est PERSONNE_TBL.

    Concretement je veux créer une nouvelle personne dans mon systeme.
    Je commence donc par instancier la classe Personne avec tous les champs qui vont bien pour définir cette personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Jojo = new Personne&#40;Prenom="Jojo"; Nom="LaFripouille"&#41;
    J'obtiens un objet Jojo.
    Je veux maintenant sauvegarder Jojo dans ma table PERSONNE_TBL.
    J'ai donc beson d'une methode permettant d'insérer un enregistrement dans cette table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Jojo.InsertDsBase&#40;&#41;
    Question : les methodes d'acces à la base de donnée (Insert, UpDate, Delete) doivent-elles être des methodes de la classe Personne et doivent-elles être instanciées dans cette classe ?
    Si non comment séparer les methodes d'accès aux donnnées ?

    J'espère que mon exemple est clair.
    Merci d'avance.

    Jojo La Fripouille

  2. #2
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut Re: Conception
    Citation Envoyé par JojoLaFripouille
    Question : les methodes d'acces à la base de donnée (Insert, UpDate, Delete) doivent-elles être des methodes de la classe Personne et doivent-elles être instanciées dans cette classe ?
    NON
    Si non comment séparer les methodes d'accès aux donnnées ?
    Soit dans une classe de base dont les autres héritent, pour ne pas tout refaire pour une autre classe ou mieux, faire une classe dédiée aux accès au données et créer une propriété de Personne qui sera du type "accesdonnees"
    7 fois à terre, 8 fois debout

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci, donc si je résume ta seconde solution (la mieux) :

    Je créé une classe AccesBase contenant entre autre les méthodes :

    InsertPersonne(Personne pers)
    UpDatePersonne(Personne pers)
    DeletePersonne(Personne pers)

    Dans ma classe Personne je créé une propriété Data du type AccesBase

    Lorsque je souhaite insérer mon objet Jojo je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Jojo.Data.InsertPersonne&#40;Jojo&#41;
    C'est à peu près ça ? (le coup du Jojo.Data.InsertPersonne(Jojo), je ne trouve pas ça super mais joli...)

  4. #4
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    créer une propriété de Personne qui sera du type "accesdonnees"
    Une bonne pratique est de ne pas donner à un objet métier, la responsabilité de "persistance" (cf. le pattern DAO). Je suis donc plutot d'accord sur le début mais pas sur l'ajout d'un attribut.

  5. #5
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    donc....

    Une classe PersonneDAO avec les méthodes : insert, update, delete et tous les find dont tu as besoin (findByPrimaryKey, findAll, findByName, findByXXX, findByYYY).

    Comme l'a dit mon prédécesseur, la classe Personne ne doit pas avoir la responsabilité de se sauvegarder en BD. C'est plutôt le rôle des autres classes qui manipulent les personnes et autres classes persistantes. Ce sont donc ces "autres" classes qui savent ce qu'elles font avec les classes "données" et qui donc utiliseront les classes DAO à bon escient.

    Si tu veux que les "autres" classes n'aient pas à savoir quel est le nom du DAO, tu peux ajouter une couche supplémentaire = une classe "PersistanceManager" qui contient des méthodes update, insert, delete, findByCriterion (cette dernière méthode attend un objet "Criterion" spécifique à chaque type de classe recherchée) moins typées que les méthodes DAO comme PersonneDAO mais qui savent orienter vers le bon DAO ensuite. Tu localises ainsi la connaissance des DAO à un seul endroit = le PersistanceManager (mais c'est peut être un peu plus compliqué à mettre en place que les "simples" DAO dans un premier temps)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 16h14
  2. Accès au ports
    Par YéTeeh dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/07/2002, 15h54
  3. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 09h09
  4. Multi-acces a la BD Paradox
    Par _Rico_ dans le forum Paradox
    Réponses: 3
    Dernier message: 22/07/2002, 16h33
  5. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo