Data mapper — Wikipédia
En génie logiciel, le data mapper est un modèle architectural, nommé par Martin Fowler dans son livre de 2003 Patterns of Enterprise Application Architecture[1]. L'interface d'un objet conforme à ce modèle inclut des fonctions telles que Créer, Lire, Mettre à jour et Supprimer (CRUD), qui opèrent sur des objets qui représentent des types d'entités de domaine dans un magasin de données.
Un data mapper est une couche d'accès aux données qui effectue le transfert bidirectionnel de données entre un stockage de données persistant (souvent une base de données relationnelle) et une représentation de données en mémoire (la couche domaine). L'objectif de ce modèle est de maintenir l'indépendance entre la représentation en mémoire et le stockage de données persistant, ainsi qu'avec le data mapper lui-même. Ceci est utile lorsqu'il est nécessaire de modéliser et d'appliquer des processus métier stricts aux données de la couche domaine qui ne sont pas correctement mappées au stockage de données persistant[2]. La couche est composée d'un ou plusieurs objets d'accès aux données, effectuant le transfert de données. Les implémentations de ces objets varient en portée. Les génériques gèrent de nombreux types d'entités de domaine différents, alors que les dédiés en gèrent un ou plusieurs.
Sa principale alternative est active record.
Implémentations
[modifier | modifier le code]Des implémentations du concept peuvent être trouvées dans divers frameworks pour de nombreux environnements de programmation.
Java / .NET
[modifier | modifier le code]- Bibliothèque Bookshelf.js[3]
- Bibliothèque TypeORM[4]
- Bibliothèque Massive.js[5]
- Bibliothèque Prisma[6]
- Bibliothèque Objection.js[7]
- Bibliothèque MikroORM[8]
- LDkit : Object Graph Mapper (OGM) pour les sources de données RDF[9]
- Atlas ORM[10] (data mapper, passerelle de données de table, générateur de requêtes et wrapper PDO)[11]
- Doctrine : Mapping objet-relationnel (ORM) et la couche d'abstraction de base de données[12]
- Cycle ORM[13] (PHP DataMapper ORM et moteur de modélisation de données)[14]
- CakePHP ORM[15] (PHP DataMapper ORM, générateur de requêtes et wrapper PDO)
- Bibliothèque SQLAlchemy
- bibliothèque mincePy[18]
- Bibliothèque DataMapper[19] (cette bibliothèque a implémenté le modèle de conception Active Record, son successeur, DataMapper 2 (maintenant ROM[20]) visait à implémenter réellement le modèle de conception dont il porte le nom)
- Framework de persistance Ecto[21]
Références
[modifier | modifier le code]- ↑ Martin Fowler, Patterns of enterprise application architecture, Addison-Wesley, (ISBN 978-0-321-12742-6, lire en ligne)
- ↑ « What's the difference between Active Record and Data Mapper? »
- ↑ (en) « Home », sur bookshelfjs.org (consulté le ).
- ↑ (en) « TypeORM - Code with Confidence. Query with Power. », sur typeorm.github.io (consulté le ).
- ↑ (en) « Home », sur massivejs.org (consulté le ).
- ↑ (en) « Instant Postgres plus an ORM for simpler db workflows », sur Prisma (consulté le ).
- ↑ (en) « Objection.js », sur vincit.github.io (consulté le ).
- ↑ (en) « MikroORM : TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. », sur mikro-orm.io (consulté le ).
- ↑ « LDkit · Linked Data query toolkit for TypeScript developers », sur ldkit.io (consulté le ).
- ↑ « Atlasphp/Atlas.Orm : A data mapper implementation for your persistence model in PHP. », sur GitHub (consulté le ).
- ↑ « Atlas ORM – Atlas »
- ↑ « Doctrine2 and ActiveRecord – Doctrine2 » [archive du ], Doctrine2 (consulté le )
- ↑ « Cycle/orm : PHP DataMapper, ORM », sur GitHub (consulté le ).
- ↑ « Cycle ORM – Cycle », GitHub
- ↑ « GitHub », sur GitHub (consulté le ).
- ↑ https://metacpan.org/dist/DBIx-Class
- ↑ « stack overflow – DBIx »
- ↑ (en) « MincePy », sur mincepy.readthedocs.io (consulté le ).
- ↑ « NameBright - Coming Soon », sur datamapper.org (consulté le ).
- ↑ « ROM », sur rom-rb.org (consulté le ).
- ↑ « Elixir-ecto/ecto : A toolkit for data mapping and language integrated query. », sur GitHub (consulté le ).