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

MVC Discussion :

[MVC]Implémentation


Sujet :

MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut [MVC]Implémentation
    Bonjour,

    j'ai une table contact et une table catégorie. un contact est toujours associé à un seul ID de catégorie.

    au niveau couche de données, j'ai donc implémenté les "CRUD" (create, read,update,delete) de la table catégorie et contact, ce sont des appels aux procédures stockées, au niveau implémentation je ne fais juste que remplir les paramètres et j'exécute la commande.

    au niveau de la couche business/métier, je fais un mapping OR, cad je représente mes entités sql sous la forme de classe objet. chacun des objets fait alors appel à la couche de données pour la persistance.

    jusque là, pourriez vous me dire si je me trompe .?

    Ici je me retrouve avec une classe objet qui aura un champ _idCategorie de type INT... mais certaines tables sont entièrements constituées de clefs étrangères, est-il alors également nécessaire de mapper ces tables sql, et de me retrouver avec des objets qui ne contienne que des champs INT ? je n'ai pas poussé la réflexion encore assez loin sur ce sujet, alors je vous remercie par avance de m'éclairer la dessus

    Cordialement, :-)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Par défaut
    Citation Envoyé par Mandotnet
    au niveau de la couche business/métier, je fais un mapping OR, cad je représente mes entités sql sous la forme de classe objet.
    Oui et non, les deux modèles devraient en fait être développés en parallèle selon moi. Ensuite, tu fais le sale boulot de mapping OR, mais tu ne peux pas simplement créer une classe pour chacune des tables, le modèle objet doit être... un modèle objet.

    Prennons ton exemple :

    Citation Envoyé par Mandotnet
    Ici je me retrouve avec une classe objet qui aura un champ _idCategorie de type INT...
    Tu auras en fait une classe Contact et une classe Catégorie qui ne contiennent évidemment pas de clés primaires et étrangères. La classe Contact contiendra par exemple un attribut de type Catégorie. La classe Catégorie pourrait contenir un tableau de Contacts.

    Lorsque vient le temps de faire appel par exemple à ta méthode create de Contact, pour créer le Contact, c'est là que tu devras récupérer la clé primaire de la catégorie associée et l'insérer dans la table Contact avec ta nouvelle entrée. Ne pense pas en termes de clé étrangères, primaires... pense plutôt en terme d'attributs et de visibilité d'une classe à l'autre.

    Je n'ai pas l'impression d'avoir été très clair mais bon ... ton modèle objet doit être un modèle objet et non simplement un modèle dérivé de ton modèle relationnel.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut
    D'accord, je te remercie pour ta réponse

    je vois ce que tu veux dire. Je ne devrais jamais avoir de "clef étrangère" sous forme de Id dans mon modèle objet, mais plutot une référence/Attribut vers une classe/objet associé à cette clef.

    Ceci me parait effectivement plus propre et plus lisible.

    De la même manière, si par exemple mon contact est en relation n-aire avec une entité contrat, alors cela se traduira par une collection/tableau de contrat dans les attributs de mon contact ?

    si je me trompe dis le moi :/
    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Par défaut
    Citation Envoyé par Mandotnet
    De la même manière, si par exemple mon contact est en relation n-aire avec une entité contrat, alors cela se traduira par une collection/tableau de contrat dans les attributs de mon contact ?
    Exactement. Si on prend l'exemple d'ajout de nouveaux contrats à un contact.

    À chaque nouveau contrat créé, tu vas créer une instance de contrat que tu vas ajouter à la liste de contrats de l'instance du contact associé.

    Lorsque vient le temps de sauvegarder ton contact, au niveau de ton mapping, tu vas parcourir la liste des contrats qui lui sont associés et les insérer dans ta base de données.

    C'est un peu plus de boulot au niveau du mapping que ce que tu avais proposé initiallement mais ça en vaut le coup.

    Un petit pattern, peut-être un peu lourd si tu ne pense pas migrer vers un autre moyen de persistance des données, mais quand même toujours bon à connaître, DAO.


  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut
    Parfait, merci pour ton aide

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut
    J'ai tout de même encore un point sur lequel j'ai des doutes, pour faciliter la chose, je joins ci-dessous le shéma de la BDD pour notre exemple :



    Nous avons cette fois des contacts, des services et la table des abonnements qui correspondent aux services que les contacts prennent.

    Si je reprends ce que nous avions dit, alors au niveau de mon objet métier Contact, j'aurai eut un champ qui serait une collection de services. Néanmoins dans le cas ci-dessus je n'aurai pas l'information concernant la date d'abonnement ni celle de rupture... Dans ce cas devrais-je avoir un champs qui serait plutot un tableau d'abonnement ? Mais comment serait modélisée ma classe Abonnement ? (sans l'objet Contact ?)

    J'en arrive à me demander si je ne devrais juste me contenter de mapper la table Contact et de ne pas ajouter d'information relative aux abonnements et services. (mais pour autant, cela ne correspondrait pas à la modélisation UML que je serai amené à faire ..)

    Merci pour votre aide (et désolé d'insister encore)

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

Discussions similaires

  1. [MVC] Implémentation d'un jeu de Puissance 4
    Par Ephasme dans le forum MVC
    Réponses: 0
    Dernier message: 08/05/2008, 03h51
  2. Implémentation du MVC en ASP.NET
    Par rabddoul dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 23/02/2008, 11h21
  3. MVC - implémentation sous DotNet
    Par bigboss87 dans le forum Framework .NET
    Réponses: 5
    Dernier message: 20/11/2007, 15h09
  4. [MVC] Problème pour l'implémentation
    Par Baptiste Wicht dans le forum MVC
    Réponses: 20
    Dernier message: 24/04/2007, 21h29
  5. [MVC] Implémenter en ASP ?
    Par korrigan dans le forum MVC
    Réponses: 1
    Dernier message: 08/11/2006, 17h53

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