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

Autres Discussion :

Faire la passerelle Métier <-> BDD


Sujet :

Autres

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut Faire la passerelle Métier <-> BDD
    Bonjour à tous,

    Je suis en train de m'intéresser au branchement des objets métiers à une base de données.

    Pour commencer simple, voici un petit projet de test avec quelques entités :
    Client : Nom, Prénom
    Produit : Nom, Description, Quantité dispo, Prix
    Commande : Client, Produit, quantité commandée, date

    Base de données :
    J'aurai 3 tables (j'imagine) possédant les mêmes champs que ci-dessus avec une clé primaire en plus. La table "Commande" elle possèdera deux clés secondaires pointant vers des enregistrements des tables "Client" et "Produit".

    Objets
    Je vois 3 classes avec les mêmes propriétés que ci-dessus ainsi qu'un identifiant correspondant à la clé primaire de la base de donnée, imposé dans le constructeur.

    Donc mon soucis est de brancher mes objets à la base de données.

    Voici ma démarche jusqu'ici :
    Pour chaque entité, on crée un gestionnaire (GesClients, GesProduits, GesCommandes). Au chargement, les gestionnaires vont récupérer tous les identifiant des objets à charger. Pour chacun d'entre eux, il les crée en spécifiant l'identifiant de référence, et appelle leur méthode "Reload()" pour qu'ils se chargent eux mêmes (un objet étant responsable de lui-même).

    Premier problème : Pour 200 clients, ça demande 200 requêtes au lancement de l'application, ça devient coûteux en temps. Est-ce aux gestionnaires à charger toutes les données d'un coup pour les positionner dans les objets ?
    Deuxième problème : Est-ce que c'est aux objets métiers de définir les requêtes select, update et insert ? Surtout lorsque je n'ai besoin que du nom (le récupérer ou le mettre à jour) et pas toute la ligne, je ne pense pas que faire une requête par propriété soit une bonne solution.
    Troisième problème : Dans la commande, si on veut être souple d'utilisation, on proposera des pointeurs vers le client et le produit plutôt que les identifiants récupérés. Mais pour ça, il faut d'abord avoir chargé ces deux dernières entités avant les commandes.
    Quatrième problème : En attribuant un identifiant pour un objet (ou un enregistrement dans la BDD), comment ça va se passer s'il faut charger une table dont la clé primaire est composée de plusieurs clés externes (par exemple j'identifie une commande par le couple Client/Produit)
    Cinquième problème : J'utilise un client (par exemple pour l'afficher), je fais donc "GetNom()". Est-ce que c'est à moi à lui demander de se réactualiser avant de lui demander son nom ou est-ce à lui à aller le rechercher auprès de la base ?

    Il doit sûrement y avoir des patterns spécifiques à ce genre de problème, mais je ne les connais pas. Je me demande même lorsqu'il y a une source de données je dois stocker les valeurs de mes objets en mémoire ou si je dois systématiquement requêter la source ?

    Bref, je suis complètement perdu, auriez-vous des pistes à me donner pour m'éclaircir ?

    Merci beaucoup,

    A bientôt

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 36
    Points
    36
    Par défaut
    2 conceptes répondront intégralement à toutes ces problèmatiques :
    1- le pattern DAO (Data Access Object)
    2- les outils d'O/R Mapping (Object/Relational Mapping)

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Ok merci, j'étudie ça de suite.

    Merci beaucoup

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut
    As tu eu les réponses à tes questions ?
    En effet j'ai les mêmes questions mais je n'ai pas les réponses !

    MERCI

Discussions similaires

  1. Faire une passerelle entre deux bases MysQL
    Par Alec6 dans le forum Débuter
    Réponses: 1
    Dernier message: 06/08/2009, 21h48
  2. [AC-2003] Peut-on faire une mise à jour d'une BDD avec les données
    Par Xtine dans le forum Access
    Réponses: 10
    Dernier message: 29/03/2009, 18h26
  3. faire une passerelle avec des machines virtuelles
    Par Lionel_aw dans le forum Windows XP
    Réponses: 7
    Dernier message: 06/10/2008, 16h35
  4. Comment faire pour acceder au server de BDD MySQL avec VB.NET?
    Par buggen25 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/08/2008, 12h42
  5. Modélisation : où faire les contrôles métiers
    Par mattheox dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/11/2007, 13h17

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