12.1. Identity Field
Guarde a chave primária do banco dentro do objeto.
Resumo
- Objeto guarda o id do banco para saber a qual linha corresponde.
- Prefira chave sem significado (surrogate) a chave com significado de negócio (CPF muda, erra, repete).
- Chave simples (um campo) é mais fácil que composta. Use tipo numérico, único por tabela ou no banco todo.
- Geração: autoincremento do banco, GUID, ou tabela de chaves (reserva blocos de ids).
- Valor do id antes de gravar: obter cedo facilita relacionamentos e Unit of Work.
Perguntas-chave
responda de cabeça, depois abraPor que evitar chaves com significado?
Dados de negócio podem mudar, ser digitados errado ou repetir; a chave precisa ser única e imutável.
Quais as formas de gerar chaves?
Autoincremento do banco, GUID, tabela de chaves (key table) ou calculado pela aplicação.
Chave única por tabela ou por banco?
Por banco simplifica Identity Map único e herança; por tabela é mais comum e simples de gerar.
Exercícios de fixação
0/5 respondidas1.
Um sistema usa o CPF como chave primária de Cliente. Um CPF foi digitado errado e já está referenciado em 30 tabelas. Qual princípio do Identity Field foi ignorado?
2.
Qual a vantagem de uma tabela de chaves (key table)?
3.
Por que Fowler prefere chaves simples a chaves compostas?
4.
Qual o papel do Identity Field junto ao Identity Map?
5.
Usar GUIDs como chave tem qual desvantagem?