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