В чем разница между StatelessSession и Session в NHibernate? - PullRequest
24 голосов
/ 24 мая 2011

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

1 Ответ

20 голосов
/ 24 мая 2011

Сеанс без сохранения состояния не отслеживает извлекаемые объекты.Например, для обычного 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».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...