Сеанс без сохранения состояния не отслеживает извлекаемые объекты.Например, для обычного ISession
следующий код:
var session = sessionFactory.OpenSession()
using(var transaction = session.BeginTransaction()){
var user = session.Get<User>(1);
user.Name = "changed name";
transaction.Commit();
}
приведет к обновлению в БД.Это отслеживание потребляет память и повышает производительность со временем до 1005 *, поскольку количество отслеживаемых объектов растет.
Тот же код с IStatelessSession
ничего не сделает.Сеансы без сохранения состояния используются, когда вам нужно загрузить много данных и выполнить некоторые пакетные операции.Его можно использовать для работы с большими наборами данных в стиле «ado.net».