Active Record
Uma tabela de banco de dados ou visão(view) é embrulhada(wrapped) em uma classe.
Uma instância de um objeto é amarrada a um único registo(tupla) na tabela.
A classe de embrulho implementa os métodos de acesso (save,find,update,delete).
E também as propriedades (setter e getter) para cada coluna na tabela ou visão.
Padrão Mapeador de Dados (Data Mapper Design)
Um Mapeador de Dados é uma Camada de Acesso a Dados que executa a transferência bidirecional de dados
entre um armazenamento de dados persistente (geralmente um banco de dados relacional) e
uma representação de dados na memória (a camada de domínio).
O objetivo do padrão é manter a representação na memória e o armazenamento de dados persistente independentes
uns dos outros e do próprio mapeador de dados.
A camada é composta por um ou mais mapeadores (ou Data Access Objects), realizando a transferência de dados.
As implementações do Mapeador variam no escopo.
Os mapeadores genéricos manipularão muitos tipos diferentes de entidade de domínio,
os mapeadores dedicados manipularão um ou alguns.
As classes nesse padrão terão getters e setters dos atributos (dependendo da linguagem) e alguns métodos como clone(), toString() e outros, se necessário.
Dessa forma esses objetos ficam mais "limpos".
Sendo assim, para trabalhar com um objeto no padrão Data Mapper.
Você deverá passar o objeto para uma terceira classe que realizará as operações implementadas (No Hibernate seria o objeto Session).
O Session terá os métodos save, update, delete, find, list...
JAVA
Hibernate(DataMapper)
Especificação JPA
.NET
NHibernate
Entity Framework
PYTHON
SQLAlchemy(DataMapper)
Django(ActiveRecord)
PHP
Doctrine 1 (ActiveRecord)
Doctrine 2 (DataMapper)
Eloquent (ActiveRecord)
NODEJS
Mongoose
Sequelize
links:
https://guvena.wordpress.com/2017/11/05/a-comparison-data-mapper-vs-active-record/
https://pt.stackoverflow.com/questions/25160/qual-a-diferen%C3%A7a-entre-os-design-patterns-data-mapper-e-active-record