10.4. Data Mapper
Camada que move dados entre objetos e banco, isolando os dois.
Resumo
- Camada de mapeadores que transfere dados entre objetos e banco, mantendo-os independentes.
- Domínio não sabe que há banco; banco não sabe que há objetos. Nem o próprio mapper é visto pelo domínio.
- Lida com divergências: herança, coleções, Value Objects, várias tabelas por objeto.
- Usa Identity Map, Unit of Work e Lazy Load. Finders via interfaces (Separated Interface).
- Custo: mais uma camada. Use com Domain Model rico; em geral, adote uma ferramenta O/R pronta.
Perguntas-chave
responda de cabeça, depois abraQual o objetivo do Data Mapper?
Permitir que modelo de objetos e esquema do banco evoluam de forma independente.
O domínio conhece o mapper?
Não. Se precisar de finders, usa uma interface definida no domínio (Separated Interface).
Quais padrões costumam acompanhá-lo?
Identity Map, Unit of Work, Lazy Load e Metadata Mapping.
Exercícios de fixação
0/5 respondidas1.
O modelo tem
Pessoa com Endereco (Value Object) e subclasses Funcionario e Cliente; o banco é legado e normalizado de outro jeito. Qual padrão de fonte de dados?2.
Em um Data Mapper puro, quem sabe que o banco existe?
3.
O domínio precisa buscar clientes inadimplentes sem depender do mapper concreto. Como?
4.
Qual o custo do Data Mapper?
5.
Durante uma transação, como o Data Mapper evita gravar objetos que não mudaram e carregar o mesmo registro duas vezes?