【问题标题】:Using Stored Procedure for reading records from Database in NHibernate?在 NHibernate 中使用存储过程从数据库中读取记录?
【发布时间】:2010-02-03 08:23:35
【问题描述】:

在 NHibernate 中使用存储过程从数据库中读取数据库记录是一种好方法吗?如果是,那么为什么或者如果不是,那么为什么? 该应用程序只有在数据访问层使用 NHibernate 从数据库中读取值的功能,没有更新和插入,只是检索。

【问题讨论】:

    标签: sql-server nhibernate stored-procedures


    【解决方案1】:

    在我看来,只有在处理大量数据时才需要存储过程。性能更好,因为数据库管理系统可以使用其优化例程来加快对存储数据的访问。

    不使用存储过程的第二个原因是,您希望将 dbms 和您的应用程序分开。因此,您可以根据需要更改数据库系统。如果您使用存储过程,您将绑定到这个指定的 dbms(即 oracle)。

    【讨论】:

    • 我正要回答几乎相同的问题。如果你有选择,我不会用sp的。维护和使用它要困难得多。
    • 存储过程比原始 sql 快是一个神话。 NHibernate 正确生成参数化的 sql,该 sql 将以类似于存储过程的方式缓存在数据库中。
    • 我坚持 Chris Marisic 先生。当我们遇到“新时代”技术时,我不再相信这些天 SP 的速度更快。如果您使用的是 VB6、VC++ 等,也许这是一种更好的方法。但就 .NET 和 Java(Struts 和 Hibernate)而言,我无法想象我们还没有进化到 SP 仍然具有更好的性能。
    【解决方案2】:

    正在使用存储过程从数据库中读取数据库记录 在 NHibernate 中有一个好的方法吗?

    如果您正在为数据网格补充水分,则不会。虽然 NHibernate 将允许这种情况,但它对 NHibernate 的使用很差,因为 NHibernate 并没有增加太多价值。为什么要依赖 NHibernate 而基本上没有任何回报?

    如果您要为物体补水,可以。 NHibernate 至少用于将存储过程返回的结果映射到对象的最小目的。您对一个小功能有很大的依赖,但这可能比推出自己的解决方案要好。

    对于任何 .NET ORM,答案基本相同,假设 ORM 可以根据存储过程返回的数据对对象进行水合。

    【讨论】:

    • 我完全同意 Micheal Maddox 先生的观点。这是一个很大的依赖,因为在开发时间方面没有太大的收益。 ORM 工具可以加快您的开发时间,此外,它们允许您集中业务逻辑而不是 DML(数据操作语言)。
    猜你喜欢
    • 2012-10-08
    • 2015-10-22
    • 1970-01-01
    • 2011-10-14
    • 2012-03-15
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 2012-01-12
    相关资源
    最近更新 更多