BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias ORMs e a Ignorância da Persistência

ORMs e a Ignorância da Persistência

Favoritos

Julie Lerman notou recentemente que o Entity Framework pode trabalhar possuindo construtores e setters privados.

No teste publicado por Julie, pode-se ver que o Entity Framework (EF) é capaz de popular uma propriedade com setters privados e invocar um construtor privado sem grandes dificuldades. É possível observar como o EF realiza esta tarefa se referindo ao EntityProxyFactory e classes relacionadas, mas na essência, trata-se de uma combinação de reflection e IL Emits. O NHibernate ainda vai um passo além ao suportar acesso a atributos privados (o que também já sendo discutido para o EF). No entanto, atualmente ambos obrigam a existência de um construtor padrão (mesmo que este não seja público).

 De forma geral esta direção é boa pois, como Julie comenta, isso promove ignorância da persistência. De forma arquitetural, tanto o Entity Framework quanto o NHibernate suportam estes padrões que auxiliam a alcançar a ignorância da persistência:

O Entity framework possui respectivamente o DBSet e o DBContext, enquanto o NHibernate possui a API de QueryOver e o SessionContext. Apesar disso, para suportar lazy loading, atualmente ambos também suportam o padrão virtual proxy que contraria esse princípio (exigindo que as propriedades sejam marcadas como virtual).

A ignorância da persistência é geralmente considerada como boa prática; regras de negócio podem ser isoladas da lógica de persistência, ao contrário de quando se utiliza o padrão Active Record. Esta característica mantém seu design mais simples e mais testável.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT