|
|
1
7
简短答复: 这取决于您执行的操作类型。如果编写好SQL,您可能会获得性能改进,但在某些情况下,由于丢失了NHibernate缓存等,您可能会获得更差的性能。 长答覆: 正如您所提到的,NHibernate位于ADO.NET之上,提供了一个抽象层。这在许多方面使您的生活更轻松,但由于所有抽象层都有一定的性能成本。 您可能会看到性能优势的主要情况是同时操作多个对象,例如更新多个实体或获取大量实体。这是因为NHibernate会话在跟踪哪些对象被修改等方面所做的工作。我的经验是,随着会话中实体数量的增加,NHibernate的性能会显著下降。 NHibernate有很多提高性能的方法,如果您真的很了解它,您可以让它的性能非常接近ADO.NET。然而,如果你对它不太熟悉,你可以很容易地击中自己的脚,从性能上看(选择N+1问题等) 在某些情况下,当从NHibernate切换到straight ADO.NET时,性能可能会变差。这是因为NHibernate抽象层引入了一些可以提高性能的特性,比如缓存。NHibernate还包括优化当前数据库管理系统生成的SQL的功能。例如,如果您使用的是SQL Server,则生成的SQL可能与使用Oracle时略有不同。
|
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |