当前位置:  开发笔记 > 编程语言 > 正文

持久性无知规模?

如何解决《持久性无知规模?》经验,为你挑选了1个好方法。

我一直在简要介绍一下NHibernate和Linq2Sql.我也打算看一下Entity Framework.

当我谈到这些ORM时,提出的问题是"它们无法扩展",它们也可以吗?从谷歌我得到的印象是他们能够很好地扩展,但最终我认为必须付出代价,是否值得为更简单的更简单的业务层付费.



1> JoshBerke..:

这是一个很好的问题,恕我直言,他们可以扩展到任何自定义DAL.我只使用了nHibernate,所以我只关注它以及它有助于扩展系统的功能.

延迟加载 - 由于它支持延迟加载,因此您可以避免加载任何不必要的项目.当然,您需要注意Select n + 1问题,但系统中有一些事情可以防止这种情况发生.

渴望获取 - 有多种方法可以急切地获取您可能需要的对象,从而避免额外的SQL访问.

二级缓存 - nHibernate支持二级缓存,可通过减少数据库访问来提高可扩展性.有各种支持提供商可以提供一些灵活性.

编写自己的SQL - 在nHibernate中,您可以调用存储过程,或提供将返回实体的内联SQL查询.当生成的sql没有删除它时,这将允许您使用自己的SQL.例如,使用递归查询急切加载自加入树.

现在说,我认为最初调整自定义DAL层更容易,因为它与它的构造密切相关并且可以对它进行微调; 但是,一个好的ORM会提供大量的钩子,让你可以优化很多.你只需花一些时间学习它.

我还认为,如果您有一个性能关键的代码区域,并且无法让ORM在您的要求中工作,那么对于应用程序的这个小区域,您可以自定义构建自己的DAL层.如果您正在使用一个像样的设计模式,例如工厂创建的存储库,那么您需要做的就是更换存储库的实现

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有