gpt4 book ai didi

nhibernate - 持久性无知可以扩展吗?

转载 作者:行者123 更新时间:2023-12-03 08:23:29 25 4
gpt4 key购买 nike

我一直在简要介绍NHibernate和Linq2Sql。我还打算看一看Entity Framework。

当我提到这些ORM时,提出的问题是“它们无法扩展”,所以可以吗?从Google那里我得到了他们能够很好地扩展的印象,但最终我认为必须付出一定的代价,是否值得为更丰富,更简单的业务层付费。

最佳答案

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

  • 延迟加载-由于它支持延迟加载,因此您可以避免加载任何不必要的项目。当然,您需要当心“选择n + 1”问题,但是系统中有一些事情可以防止这种情况的发生。
  • 急切获取-有多种方法可以急切地获取对象,而您可能需要这种方法,从而避免了SQL的额外旅行。
  • 二级缓存-nHibernate支持二级缓存,该缓存可用于通过减少访问数据库的次数来增加可伸缩性。有各种可用的支持提供程序,这些提供程序可以给您带来一定的灵活性。
  • 编写您自己的SQL-在nHibernate中,您可以调用存储过程,或提供内联SQL查询以返回您的实体。当生成的sql不削减它时,这将使您可以使用自己的SQL。例如,渴望使用递归查询来加载自连接树。

  • 现在说了这一点,我认为最初调整自定义DAL层会更容易,因为您对它的构造很熟悉并且可以对其进行微调。但是,一个好的ORM将提供大量的 Hook ,使您可以进行很多优化。您只需要花一些时间来学习它。

    我还感觉到,如果您的代码性能至关重要,并且无法使ORM满足您的要求,那么对于应用程序的这一微小区域,您可以定制构建自己的DAL层。如果您使用的是一种体面的设计模式(例如由工厂创建的存储库),那么您要做的就是交换存储库的实现

    关于nhibernate - 持久性无知可以扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545976/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com