Data mapper

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. 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. 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

Des implémentations du concept peuvent être trouvées dans divers frameworks pour de nombreux environnements de programmation.

Java / .NET

Node.js / TypeScript

PHP

Perl

Python

Ruby

Elixir

Références

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Data mapper pattern » (voir la liste des auteurs).
  1. ↑ Martin Fowler, Patterns of enterprise application architecture, Addison-Wesley, (ISBN 978-0-321-12742-6, lire en ligne)
  2. ↑ (en) « What's the difference between Active Record and Data Mapper? », sur culttt.com.
  3. ↑ (en) « Home », sur bookshelfjs.org (consulté le ).
  4. ↑ (en) « TypeORM - Code with Confidence. Query with Power. », sur typeorm.github.io (consulté le ).
  5. ↑ (en) « Home », sur massivejs.org (consulté le ).
  6. ↑ (en) « Instant Postgres plus an ORM for simpler db workflows », sur Prisma (consulté le ).
  7. ↑ (en) « Objection.js », sur vincit.github.io (consulté le ).
  8. ↑ (en) « MikroORM : TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. », sur mikro-orm.io (consulté le ).
  9. ↑ « LDkit · Linked Data query toolkit for TypeScript developers », sur ldkit.io (consulté le ).
  10. ↑ « Atlasphp/Atlas.Orm : A data mapper implementation for your persistence model in PHP. », sur GitHub (consulté le ).
  11. ↑ « Atlas ORM – Atlas », sur atlasphp.io.
  12. ↑ « Doctrine2 and ActiveRecord – Doctrine2 », sur doctrine-project.org via Internet Archive, Doctrine2 (consulté le ).
  13. ↑ « Cycle/orm : PHP DataMapper, ORM », sur GitHub (consulté le ).
  14. ↑ « Cycle ORM – Cycle », GitHub, sur GitHub.
  15. ↑ « GitHub », sur GitHub (consulté le ).
  16. ↑ https://metacpan.org/dist/DBIx-Class
  17. ↑ « stack overflow – DBIx »
  18. ↑ (en) « MincePy », sur mincepy.readthedocs.io (consulté le ).
  19. ↑ (en) « NameBright - Coming Soon », sur datamapper.org via Wikiwix (consulté le ).
  20. ↑ « ROM », sur rom-rb.org (consulté le ).
  21. ↑ « Elixir-ecto/ecto : A toolkit for data mapping and language integrated query. », sur GitHub (consulté le ).