Início Notícias ORMs e a Ignorância da Persistência
23 dez 2013 1 min(s) de Leitura
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:
Repositório;
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.