13.2. Query Object
Consulta montada com objetos e campos do domínio, traduzida para SQL.
Resumo
- Interpreter que representa uma consulta ao banco como estrutura de objetos.
- Critérios escritos em termos de classes e campos do domínio, não de tabelas e colunas.
- Usa Metadata Mapping para traduzir campo → coluna e gerar o SQL.
- Benefícios: esconde o esquema, permite trocar banco, otimizar ou consultar o Identity Map antes.
- Custo alto de construção: só vale com Data Mapper/Metadata Mapping. Prefira o de uma ferramenta pronta.
Perguntas-chave
responda de cabeça, depois abraQual padrão GoF está por trás do Query Object?
Interpreter: a consulta é uma estrutura de objetos que se traduz em SQL.
Por que escrever critérios em termos do domínio?
O desenvolvedor não precisa conhecer o esquema, e o esquema pode mudar sem quebrar as consultas.
Quando não vale construir um?
Sem Domain Model + Data Mapper e metadados, o esforço não compensa.
Exercícios de fixação
0/5 respondidas1.
new Criteria().greaterThan("numeroDeDependentes", 0) gera WHERE num_dep > 0. Qual padrão?2.
Qual a principal vantagem do Query Object?
3.
De qual padrão o Query Object depende para traduzir campos em colunas?
4.
Quando Fowler diz que não vale construir seu próprio Query Object?
5.
Um Query Object pode verificar o Identity Map antes de ir ao banco?