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

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

Java / .NET

modifier

Node.js / TypeScript

modifier
  • 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]

PHP

modifier
  • 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)

Perl

modifier

Python

modifier

Ruby

modifier
  • 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)

Elixir

modifier
  • Framework de persistance Ecto[21]

Références

modifier
(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, 2003 (ISBN 978-0-321-12742-6, lire en ligne)
  2. « What's the difference between Active Record and Data Mapper? »
  3. (en) « Home », sur bookshelfjs.org (consulté le 3 août 2025).
  4. (en) « TypeORM - Code with Confidence. Query with Power. », sur typeorm.github.io (consulté le 3 août 2025).
  5. (en) « Home », sur massivejs.org (consulté le 3 août 2025).
  6. (en) « Instant Postgres plus an ORM for simpler db workflows », sur Prisma (consulté le 3 août 2025).
  7. (en) « Objection.js », sur vincit.github.io (consulté le 3 août 2025).
  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 3 août 2025).
  9. « LDkit · Linked Data query toolkit for TypeScript developers », sur ldkit.io (consulté le 3 août 2025).
  10. « Atlasphp/Atlas.Orm : A data mapper implementation for your persistence model in PHP. », sur GitHub (consulté le 3 août 2025).
  11. « Atlas ORM – Atlas »
  12. « Doctrine2 and ActiveRecord – Doctrine2 » [archive du 21 juillet 2013], Doctrine2 (consulté le 2 avril 2013)
  13. « Cycle/orm : PHP DataMapper, ORM », sur GitHub (consulté le 3 août 2025).
  14. « Cycle ORM – Cycle », GitHub
  15. « GitHub », sur GitHub (consulté le 3 août 2025).
  16. https://metacpan.org/dist/DBIx-Class
  17. « stack overflow – DBIx »
  18. (en) « MincePy », sur mincepy.readthedocs.io (consulté le 3 août 2025).
  19. « NameBright - Coming Soon », sur datamapper.org (consulté le 3 août 2025).
  20. « ROM », sur rom-rb.org (consulté le 3 août 2025).
  21. « Elixir-ecto/ecto : A toolkit for data mapping and language integrated query. », sur GitHub (consulté le 3 août 2025).

📚 Artikel Terkait di Wikipedia

SQLAlchemy

publié sous licence MIT. SQLAlchemy a opté pour l'utilisation du pattern data mapper plutôt que l'active record utilisés par de nombreux autres ORM. SQLAlchemy

Code QR

1 module. Le position pattern est séparé du reste des données par un espace blanc de largeur 1 module. Les alignement pattern ont également pour but

Saint-Paterne-Racan

Pour les articles homonymes, voir Saint Paterne et Racan. Saint-Paterne-Racan est une commune française située dans le département d'Indre-et-Loire, en

Active record

implémente des accesseurs pour chaque attribut. Sa principale alternative est data mapper. Une des implémentations les plus utilisées est celle de la classe ActiveRecord

Deep packet inspection

sous pattern «ZC-Bridge» seulement si «User-Agent\x3A» a été précédemment rencontré et qu'il n'y a pas eu de retour à la ligne entre. Ces patterns affectent

Berkeley Packet Filter

et Ye-Qiong Song, « IOscope: A Flexible I/O Tracer for Workloads’ I/O Pattern Characterization », ISC High Performance,‎ juillet 2018, p. 14 (DOI 10

Donnée synthétique

article (2023) « The Limitations of Synthetic Data » publié par la revue IEEE Transactions on Pattern Analysis and Machine Intelligence (ici, on a montré

Géolocalisation

un mode au choix : Data loggers : Ces terminaux stockent les positions localement et celles-ci doivent ensuite être extraites ; Data pullers : Ces terminaux