Подтвердить что ты не робот

В чем разница между StatelessSession и Session в NHibernate?

В чем разница между StatelessSession и Session в NHibernate?

4b9b3361

Ответ 1

Сеанс без учета состояния не отслеживает объекты, которые извлекаются. Например, для обычного ISession следующего кода:

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

приведет к обновлению в БД. Это отслеживание расходует память и снижает производительность ISession со временем, поскольку количество отслеживаемых объектов растет.

Тот же код с IStatelessSession ничего не сделает. Сеансы без учета состояния используются, когда вам нужно загружать большое количество данных и выполнять некоторые операции пакетной обработки. Его можно использовать для работы с большими наборами данных в более стиле ado.net.