sio:bloc2:orm

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
sio:bloc2:orm [2024/09/03 11:07] – supprimée - modification externe (Date inconnue) 127.0.0.1sio:bloc2:orm [2024/09/03 11:07] (Version actuelle) – ↷ Page déplacée de slam4:orm à sio:bloc2:orm jcheron
Ligne 1: Ligne 1:
 +====== 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 **O**bject **R**elational **M**apper\\
 +
 +Le mappage Relationnel/Objet se heurte à quelques problèmes dans des mondes aux concepts aussi différents :
 +  - la distinction structurelle entre un objet et un enregistrement/tuple ;
 +  - 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) ;
 +  - 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 ;
 +  - 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 :
 +  - De définir les règles de mappage entre une base de données et un modèle objet
 +  - De charger un enregistrement depuis la BDD pour en faire une instance de classe
 +  - De charger un ensemble d'enregistrements en interrogeant la base de données pour obtenir un ensemble d'objets (collection)
 +  - De sauvegarder un objet dans la BDD sous forme d'enregistrement
 +  - De sauvegarder un ensemble d'objets dans la base de données
 +  - 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
 +
 +===== Design patterns =====
 +Il existe 2 familles d'ORM, basées sur 2 patrons de conception différents :
 +  * Active Record
 +  * DataMapper