3. Mapeando para Bancos de Dados Relacionais
Objetos ≠ tabelas. Escolha o padrão de acesso, depois resolva comportamento e estrutura.
Resumo
- Arquitetura de acesso: Row Data Gateway, Table Data Gateway, Active Record ou Data Mapper. Separe SQL da lógica.
- Comportamento: Unit of Work (o que mudou), Identity Map (carregar 1x), Lazy Load (carregar sob demanda).
- Estrutura: Identity Field, Foreign Key Mapping, Association Table Mapping, Embedded Value, Serialized LOB.
- Herança: Single Table, Class Table ou Concrete Table Inheritance. Troca entre duplicação, joins e simplicidade.
- Leia dados em lote (evite N consultas), use conexões ligadas à transação e prefira ferramenta O/R pronta.
Perguntas-chave
responda de cabeça, depois abraQuais os quatro padrões arquiteturais de acesso a dados?
Table Data Gateway, Row Data Gateway, Active Record e Data Mapper.
Que problema o Unit of Work resolve?
Saber quais objetos foram criados, alterados ou removidos e gravá-los no banco de forma coordenada no fim da transação.
Por que ler dados em lote?
Cada ida ao banco é cara. Uma consulta que traz muitas linhas é mais rápida que várias consultas de uma linha.
Exercícios de fixação
0/5 respondidas1.
Uma tela lista 200 pedidos e, para cada um, faz uma consulta separada para buscar o cliente. Qual o problema e o que Fowler recomenda?
2.
Quando o Data Mapper é preferível ao Active Record?
3.
Qual padrão garante que o mesmo registro do banco seja carregado em um único objeto na sessão?
4.
Qual afirmação sobre o mapeamento de herança é correta?
5.
Qual a recomendação geral de Fowler sobre ferramentas de mapeamento objeto-relacional?