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

Langage PHP Discussion :

[POO] Différence entre ORM et Active Record ?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut [POO] Différence entre ORM et Active Record ?
    --------------------------
    Note au modo :
    Je n'ai pas vu de topic à propos des Design Patterns,

    Donc je l'ai mis la temporairement et uniquement paske je bosse en PHP, c'était le seul repere.
    Merci de le deplacer s'il a une autre place plus appropriée
    Donc désolé par avance si ce topic est mal placé.
    ------------------------------

    Je voudrais savoir quelle différence il existe entre l'Object Relational Mapping et l'Active Record Pattern

    Pour moi c'est la meme chose :

    ORM :
    on modélisé des tables en classes. La propriété d"une classe est donc un champs de la table.
    Il s'agit donc d'un wrapper.

    Activer Record:
    La classe implémente des méthodes telles que save(), update()
    qui sont appelées dès que l'objet est modifié, et met a jour la table wrappée, de facon synchrone.

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    Active Record est un pattern d'ORM, il est implémenté dans Ruby on Rails

    Il y a également d'autre pattern d'ORM comme Table data gateway et Row data gateway (implémenté dans le zend framework)

    ORM n'est pas un design pattern :
    Wikipedia:
    L'object-relational mapping (ORM), que l'on pourrait traduire par « correspondance entre monde objet et monde relationnel » est une technique de programmation informatique qui crée l'illusion d'une base de données orientée objet à partir d'une base de données relationnelle en définissant des correspondances entre cette base de données et les objets du langage utilisé.
    J'espère avoir été clair, car je ne suis pas encore très au point sur ce sujet là

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par benji07 Voir le message
    Active Record est un pattern d'ORM, il est implémenté dans Ruby on Rails

    Il y a également d'autre pattern d'ORM comme Table data gateway et Row data gateway (implémenté dans le zend framework)

    ORM n'est pas un design pattern :


    J'espère avoir été clair, car je ne suis pas encore très au point sur ce sujet là
    Oui c'est bien clair
    Ok ca fait partie du concept d'ORM. je comprend mieux le couplage.

    En fait ta le concept ORM puis des implémentations diverses:
    - active record
    - table gateway qui lui a l'air de beaucoup s'inspirer de ADO.net

    Connais tu la différence (dont technique) entre les 2 ?

    Je m'apercois finalement que PHP s'inspire beaucoup des concepts qui sont implémentés dans RoR...

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    merci pour les 2 articles

    je vois bien la différence coté modèle :

    - Gateway séparer la structure de l'objet et les méthodes DB
    - Active record les fusionne.

    est ce que cela signifie Gateway se démarque par le fait qu'il sépare les structure objet (nom, prenom) des actions (update, insert, find)

    alors que Active record met totu dans le meme panier ?

    comment cela se traduit côté code ?

    est ce qu'on a N classes de structure qui héritent d'une classe mère qui implémente elle seule les méthodes DB (donc méthodes communes à toutes les classes de structure)

  6. #6
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    Je ne sais pas trop.

    J'ai connu le table data gateway, avec le composant Zend_Db_Table du zend framework: http://framework.zend.com/manual/fr/zend.db.table.html

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu peux voir Active Record comme une évolution de l'ORM.

    L'ORM définit des classes PHP qui correspondent aux tales de la BDD. Active Record précise que ces classes ont en plus des méthodes précises pour sauvegarder les données. De mon point de vue, l'ORM ressemble à des classes simples (une table ne peut pas hériter d'une autre et n'a aucune méthode), tandis qu'Active Record correspond plutôt à de l'héritage (propagation des méthodes de sauvegarde, surtout depuis LSB).

Discussions similaires

  1. [XL-2010] Quelle différence entre un contrôle ACTIVE X et un Userform ?
    Par Siefch1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/03/2013, 17h04
  2. Réponses: 4
    Dernier message: 13/02/2009, 09h42
  3. [POO] Différence entre POO et procédural
    Par Golork dans le forum Langage
    Réponses: 17
    Dernier message: 16/12/2008, 17h06
  4. [POO] Différences entre php4 et php5
    Par etudianti4 dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2008, 18h31
  5. différences entre SQLquery.open active ExecSQL
    Par Ice-tea dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/06/2006, 16h13

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