2011-05-24 12 views
22

NHIbernate içinde StatelessSession ve Session arasındaki fark nedir?NHibernate'de StatelessSession ve Oturum arasındaki fark nedir?

+0

[sessionfactory.openSession() ile sessionfactory.openStatelessSession() arasındaki farkın olası iki kopyası olabilir mi?] (Http://stackoverflow.com/questions/5496995/difference-between-sessionfactory-opensession-and-sessionfactory-openstatelesss) –

+0

Cevapla [burada] (http://stackoverflow.com/questions/2679636/nhibernate-isession-vs-istatelesssession) – Reniuz

cevap

18

Vatansız oturumu alınır varlıkları izlemiyor. kod aşağıdaki normal ISession için Örnek:

var session = sessionFactory.OpenSession() 
using(var transaction = session.BeginTransaction()){ 
    var user = session.Get<User>(1); 
    user.Name = "changed name"; 
    transaction.Commit(); 
} 

DB güncelleme sonuçlanacaktır. Bu izleme hafızayı tüketir ve izlenen varlıkların miktarı büyüdüğü için ISession performansını zamanla düşürür.

IStatelessSession ile aynı kod hiçbir şey yapmayacaktır. Çok sayıda veri yüklemeniz ve bazı toplu işlemleri gerçekleştirmeniz gerektiğinde, durum bilgisi olmayan oturumlar kullanılır. Daha fazla "ado.net" tarzında büyük veri kümeleriyle çalışmak için kullanılabilir.

+7

Bu cevap 'StatelessSession' hakkında daha fazla ayrıntıya ihtiyaç duyar. Veritabanını bir 'StatelessSession' ile güncellediğiniz bir kod örneğine ne dersiniz? – Jess