BT

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.

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.