Active record
Em Engenharia de software, active record é um padrão de projeto encontrado em softwares que armazenam seus dados em Banco de dados relacionais. Assim foi nomeado por Martin Fowler em seu livro Patterns of Enterprise Application Architecture.[1] A interface de um certo objeto deve incluir funções como por exemplo Inserir(Insert), Atualizar(Update), Apagar(Delete) e propriedades que correspondam de certa forma diretamente às colunas do banco de dados associado.
Active record é uma abordagem para acesso de dados num banco de dados. Uma tabela de banco de dados ou visão(view) é embrulhada(wrapped) em uma classe. Portanto, uma instância de um objeto é amarrada a um único registo(tupla) na tabela. Após a criação e gravação de um objeto, um novo registo é adicionado à tabela. Qualquer objeto carregado obtém suas informações a partir do banco de dados. Quando um objeto é atualizado, o registro correspondente na tabela também é atualizado. A classe de embrulho implementa os métodos de acesso(setter e getter) ou propriedades para cada coluna na tabela ou visão.
Este padrão é comumente utilizado por ferramentas de persistência de objetos e em mapeamento objeto-relacional. Geralmente as relações de chave estrangeira serão expostas como uma instância do objeto do tipo apropriado por meio de uma propriedade.
Implementação
editarImplementações do conceito podem ser encontradas em vários Frameworks para diversos ambientes de programação. Por exemplo, se um banco de dados
possui a tabela produtos
com as colunas nome
(tipo string) e valor
(tipo number) e o padrão de projeto Active Record é implementado na classe Produto
, o pseudo-código:
produto = new Produto() produto.nome = "Produto exemplo" produto.valor = 123.45 produto.save()
Irá criar um novo registro na table produtos
com os valores fornecidos sendo grosseiramente equivalente ao comando SQL:
INSERT INTO produtos (nome, valor) VALUES ('Produto exemplo', 123.45);
Da mesma forma, a classe pode ser usada para consultar o banco de dados:
b = Produto.find_first("nome", "televisor")
Este código criará um novo objeto do tipo Produto
baseado no primeiro registro encontrado da tabela produtos
onde a coluna nome
contém o valor "televisor". O comando SQL usado pode ser similar ao seguinte (dependendo dos detalhes da implementação SQL do banco de dados):
SELECT * FROM produtos WHERE nome = 'televisor' LIMIT 1; -- MySQL ou PostgreSQL
Ligações externas
editar- «Implementação Java» (em inglês)
- «Implementação .NET» (em inglês)
- «Implementação Ruby» (em inglês)
- «Página do Projeto AIR Active Record» (em inglês)
Referências
editar- ↑ Fowler, Martin (2003). Patterns of enterprise application architecture. [S.l.]: Addison-Wesley. ISBN 978-0-321-12742-6