BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

ORMs e a Ignorância da Persistência

por Roopesh Shenoy , traduzido por Renan de Melo Oliveira em 23 Dez 2013 |

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.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT