2011-05-24 20 views
22

¿Cuál es la diferencia entre StatelessSession y Session en NHibernate?¿Cuál es la diferencia entre StatelessSession y Session en NHibernate?

+0

posible duplicado de [diferencia entre sessionfactory.openSession() y sessionfactory.openStatelessSession()?] (Http://stackoverflow.com/questions/5496995/difference-between-sessionfactory-opensession-and-sessionfactory-openstatelesss) –

+0

answer [here] (http://stackoverflow.com/questions/2679636/nhibernate-isession-vs-statelesssession) – Reniuz

Respuesta

18

La sesión sin estado no está rastreando las entidades que se recuperan. Por ejemplo, para regular de ISession siguiente código:

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

dará lugar a la actualización de base de datos. Este seguimiento consume memoria y hace que el rendimiento ISession se degrade con el tiempo debido a que la cantidad de entidades rastreadas está creciendo.

El mismo código con IStatelessSession no hará nada. Las sesiones sin estado se utilizan cuando necesita cargar muchos datos y realizar algunas operaciones de procesamiento por lotes. Se puede usar para trabajar con grandes conjuntos de datos en un estilo más "ado.net".

+7

Esta respuesta necesita más detalles sobre 'StatelessSession'. ¿Qué tal un ejemplo de código donde actualizas la base de datos con un 'StatelessSession'? – Jess

Cuestiones relacionadas