10.3. Active Record
Objeto = linha + SQL + regra de negócio.
Resumo
- Objeto que envolve uma linha, encapsula o acesso ao banco e contém lógica de domínio.
- Métodos típicos:
find()estático,save()/insert()/update(), getters e regras de negócio. - Funciona bem quando o modelo é isomórfico ao esquema: uma classe por tabela, campos iguais às colunas.
- Limites: acopla domínio ao banco, dificulta herança, coleções complexas e testes sem banco.
- Quando o modelo diverge do esquema, migre para Data Mapper.
Perguntas-chave
responda de cabeça, depois abraQuando Active Record é uma boa escolha?
Domain Model simples, com classes que correspondem 1:1 às tabelas.
Qual o principal acoplamento que ele cria?
Entre o modelo de objetos e o esquema do banco; mudar um obriga a mudar o outro.
Qual a diferença para Row Data Gateway?
Active Record tem lógica de domínio; Row Data Gateway não.
Exercícios de fixação
0/5 respondidas1.
Cliente.find(7).aplicarDesconto(10).save(): o objeto busca, contém a regra e grava a si mesmo. Qual padrão?2.
Qual situação indica que é hora de sair do Active Record?
3.
Qual desvantagem do Active Record afeta os testes unitários?
4.
Active Record é o padrão por trás de qual estilo popular de framework?
5.
Comparando Active Record e Data Mapper, qual é verdade?