sio:bloc2:orm

Mapping relationnel/Objet

Quelque soit l'architecture applicative utilisée, la persistance des données occupe une place importante dans l'implémentation de solutions applicatives : elle est primordiale, mais aussi et surtout coûteuse en temps de développement.

La place croissante prise par les développements Objet, y compris dans le monde du Web, a favorisé l'apparition de nouveaux outils : Celle des frameworks de persistance, spécialisés dans le mappage entre le modèle relationnel, et le modèle objet.

ORM signifie Object Relational Mapper

Le mappage Relationnel/Objet se heurte à quelques problèmes dans des mondes aux concepts aussi différents :

  1. la distinction structurelle entre un objet et un enregistrement/tuple ;
  2. la notion fondamentale de clé dans le monde relationnel, absente dans le monde objet (seule la référence ou l'adresse mémoire est utilisée) ;
  3. la différence entre les liens : des relations basées sur l'intégrité référentielle d’un côté, des références sur des objets de l’autre ;
  4. la notion de navigation, forte en objet et inconnue en relationnel.

Les ORM proposent des solutions pour réunir ces 2 mondes et ces 2 paradigmes. Ils permettent :

  1. De définir les règles de mappage entre une base de données et un modèle objet
  2. De charger un enregistrement depuis la BDD pour en faire une instance de classe
  3. De charger un ensemble d'enregistrements en interrogeant la base de données pour obtenir un ensemble d'objets (collection)
  4. De sauvegarder un objet dans la BDD sous forme d'enregistrement
  5. De sauvegarder un ensemble d'objets dans la base de données
  6. De traduire les relations entre tables sous forme de liens entre classes d'objet :
    • pour permettre de charger depuis la base un graphe d'objets correspondant aux objets liés
    • pour permettre de mettre à jour dans la base de données ce graphe d'objets modifiés

Il existe 2 familles d'ORM, basées sur 2 patrons de conception différents :

  • Active Record
  • DataMapper
  • sio/bloc2/orm.txt
  • Dernière modification : il y a 3 mois
  • de jcheron