【问题标题】:NHibernate Configuration.AddDocument is slowNHibernate Configuration.AddDocument 很慢
【发布时间】:2009-11-02 14:59:18
【问题描述】:

我正在一个小项目中测试 fluent-nhibernate。我有近 10 个类,当我调用 BuildSessionFactory 方法时,我得到了大约 4500 毫秒的缓慢响应(对于在大约 40 毫秒内运行的项目来说太多了)

我发现最长的方法调用是 NHibernate 程序集中的 Configuration.AddDocument(xxx)。

我没有设置use_reflection_optimizer,所以我想问题出在我的配置中(我希望如此)。


这就是我得到的..

2009-11-02 17:32:04,171 [7] 信息 NHibernate.Cfg.Environment - NHibernate 2.1.1.4000 (2.1.1.4000)

2009-11-02 17:32:04,456 [7] 信息 NHibernate.Cfg.Environment - 字节码提供者名称:lcg

2009-11-02 17:32:05,234 [7] 信息 NHibernate.Dialect.Dialect - 使用 方言:NHibernate.Dialect.MsSql2008Dialect

2009-11-02 17:32:07,240 [7] 信息 NHibernate.Cfg.XmlHbmBinding.Binder - 映射类:ImpelSystems.Model.GestioneInterruzioni.FuoriServizio -> FuoriServizio

2009-11-02 17:32:07,304 [7] 信息 NHibernate.Dialect.Dialect - 使用 方言:NHibernate.Dialect.MsSql2008Dialect

2009-11-02 17:32:07,306 [7] 信息 NHibernate.Cfg.XmlHbmBinding.Binder - 映射类: ImpelSystems.Model.GestioneInterruzioni.RegistroUtenti -> 注册用户

所以启动大约需要一秒钟是可以的……但是第一个类在 2 秒内被映射。我只是想寻找原因....

【问题讨论】:

    标签: nhibernate configuration performance


    【解决方案1】:

    构建会话工厂可能会优化 1 或 2 秒,但不能将 NHibernate 用于必须启动几分之一秒的应用程序。 大多数使用 NHibernate 的应用程序作为 web 应用程序或服务运行。对于这种应用来说,几秒多多少少都无所谓,但对于你的应用,恐怕只有手工构建 sql 会足够快。

    【讨论】:

      【解决方案2】:

      NHibernate 在创建SessionFactory 期间完成了大部分映射工作。通过在启动期间进行映射和查询翻译,每次创建Session 时都无需支付费用。这就是为什么在使用 NHibernate 时建议在每个应用程序生命周期中只创建一次 SessionFactory

      正如@Paco 所说,如果您需要非常快速的启动,NHibernate 可能不是此应用程序的最佳选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-23
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 2011-10-22
        相关资源
        最近更新 更多