В чем разница между StatelessSession
и Session
в NHibernate?
В чем разница между StatelessSession и Session в NHibernate?
Ответ 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.