BT

ORM et l'ignorance de persistance

par Roopesh Shenoy , traduit par Slim Ouertani le 11 oct. 2013 |

Julie Lerman a récemment souligné qu’Entity Framework peut fonctionner avec des classes ayant des constructeurs et des mutateurs privés.

Le test publié par Julie, montre qu’Entity Framework (EF) est capable d’invoquer un mutateur ou un constructeur privé sans trop de difficultés. Vous pouvez remarquer qu’EF fait cela en se référant à EntityProxyFactory et ses classes connexes, mais il s'agit essentiellement d'une combinaison de reflection et d’IL Emits. NHibernate va plus loin et prend même en charge l’accès aux propriétés privées (discuté également pour EF). Toutefois, les deux exigent actuellement que vous ayez un constructeur par défaut (même s’il n’est pas public).

Cette orientation générale est meilleure parce que, comme le mentionne Julie, elle favorise l’ignorance de persistance.

Architecturalement, Entity Framework et NHibernate supportent l’utilisation des modèles qui permettent d'achever l'ignorance de la persistance :

  • Repository
  • Unit of work

Entity Framework contient respectivement DbSet et DbContext, alors que NHibernate inclut l’api QueryOver et SessionContext. D'autre part, pour supporter le chargement tardif, ils suivent actuellement le modèle de proxy virtuel qui s’oppose à ce principe (besoin de marquer les propriétés comme virtuelles).

L'ignorance de persistance est généralement considérée comme une bonne pratique, les règles métier peuvent être isolées de la logique de persistance, contrairement, par exemple, lors de l'utilisation du modèle Active Record. Cela permet de maintenir la conception globale simple et facile à tester.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT