Skip to content

Instantly share code, notes, and snippets.

@danilobatistaqueiroz
Created May 21, 2019 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danilobatistaqueiroz/54c02c3985d5759bf1e734bc8414ded7 to your computer and use it in GitHub Desktop.
Save danilobatistaqueiroz/54c02c3985d5759bf1e734bc8414ded7 to your computer and use it in GitHub Desktop.
ORM

Padrões de Projeto

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


Ferramentas ORM

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment