2009-06-25 11 views
0

nhibernateは、誰かがリクエストするたびに、またはアプリケーションの起動時に1回だけxmlファイルを解析しますか?ここにもnhibernate開始パフォーマンス

はイムがやって何です:

public class SessionManager 
{ 
    private readonly ISessionFactory _sessionFactory; 

    public SessionManager() 
    { 
     _sessionFactory = GetSessionFactory(); 
    } 

    public ISession GetSession() 
    { 
     return _sessionFactory.OpenSession(); 
    } 

    private static ISessionFactory GetSessionFactory() 
    { 
     return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005 
          .ConnectionString(c => 
              c.Is(
               @"Data Source=Pc-De-Yassir;Initial Catalog=MyDatabase;User Id=sa;Password=password;Integrated Security=True") 
         )) 
      .Mappings(m => 
         m.AutoMappings.Add 
          (
          AutoPersistenceModel.MapEntitiesFromAssemblyOf<Model.Category>() 
         )) 
      .BuildSessionFactory(); 
    } 
} 

、ここでは、私は、データベースからデータを取得する方法である

public IList<Category> GetCategories() 
    { 
var session = new SessionManager().GetSession(); 
     return session.CreateCriteria(typeof(Category)) 
      .List<Category>();} 

だから私の質問は、NHibernateは、それ自体が、この方法は、最初に実行する時間を設定しますされますか、要求が行われるたびに?

答えて

3

ISessionFactoryを頭の上からインスタンス化するたびに一度...

+1

..アプリの起動時に一度だけ発生するはずです。 –

+0

はい。しかし明らかにあなたがそれを書いた方法に依存します... –

2

これは1回だけです。アプリケーションのパフォーマンスを向上させたい場合は、ngen.exeツールを使用してください。 nHibernateは、アプリケーションがはじめて起動するときにコンパイルする必要があるコード量のために、通常は初めて低速です。

私は、アプリケーションの起動時にパフォーマンスがよく似ていて、ngen.exeが私の問題を解決しました。