BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

对象关系映射和透明持久化

| 作者 Roopesh Shenoy 关注 0 他的粉丝 ,译者 马德奎 关注 0 他的粉丝 发布于 2013年9月3日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Julie Lerman最近注意到,Entity Framework可以使用具有私有构造函数和私有属性setter方法的类

在Julie发表的测试中,读者可以看到,Entity Framework(EF)能够为拥有私有setter方法的属性赋值及调用私有构造函数,而且过程比较简单。EF通过引用 EntityProxyFactory类和其它相关类实现这一过程,但关键是综合运用了反射和IL Emit方法。NHibernate更进一步,它甚至支持存取私有属性(这点在设计EF时也已经讨论过)。不过,目前两者均需要开发人员提供默认构造函数(即使是非公共的)。

Julie说,这个发展方向很好,因为它可以促进透明持久化

从架构上说,Entity Framework和NHibernate两者均支持使用有助于实现透明持久化的模式——

相应地,Entity framework有类DBSetDBContext,而NHibernate有QueryOver api和类SessionContext。另一方面,为了支持延迟加载,目前两者也都遵循违背这一原则的“虚拟代理(Virtual Proxy)” 模式(需要把属性标记为virtual)。

一般来说,透明持久化是个很好的做法;例如,与使用“活动记录(Active Record)” 模式不同,它将业务规则与持久化逻辑分离。由此,整个设计更简洁,测试更容易。

查看英文原文:ORMs And Persistence Ignorance

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT