私は、新しいメッセージが1秒ごとにテーブルに挿入されるプロジェクトに取り組んでいます。 EntityFrameworkには、コンテキストの存続期間をできるだけ短く保つために、コネクションプールと呼ばれるものがあります。コンテキストを破棄します。これはNhibernateセッションに適用されますか?Nhibernateとセッションプーリング
ISessionFactory sf = cfg.BuildSessionFactory();
ISession session = sf.OpenSession();
While(true)
{
//.......
using (var tran = session.BeginTransaction())
{
session.SaveOrUpdate(msg);
tran.Commit();
}
Thread.Sleep(1000);
}
それとも
ISessionFactory sf = cfg.BuildSessionFactory();
While(true)
{
//.......
using(var session = sf.OpenSession())
{
using (var tran = session.BeginTransaction())
{
session.SaveOrUpdate(msg);
tran.Commit();
}
Thread.Sleep(1000);
}
}
の両方が動作しているように見えるが、私はどちらを使用しなければなりませんか?
[NHibernateセッションをいつ開くことができますか?](http://stackoverflow.com/questions/1243835/how-long-can-should-an-nhibernate-session-be-kept -open) – Fran
'SessionFactory'インターフェースの' OpenStatelessSession'メソッドを見てみる価値があります。ステートレスセッションのコンセプトは、あなたがやっていることに適しているようです。 –