Настольное приложение NHibernate: должно ли оно использовать несколько сеансов? - PullRequest
3 голосов
/ 01 декабря 2010

Должно ли настольное приложение NHibernate использовать SessionFactory и несколько сеансов? Правило Один сеанс на транзакцию применяется только к веб-приложениям?

С уважением, MadSeb

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

Да, настольное приложение NHibernate обычно должно использовать несколько сеансов.

В двухуровневом сценарии вы будете использовать сеанс для каждого логического «сеанса взаимодействия», такого как данный «вид» или «экран». Здесь вы можете поддерживать сеанс дольше, чем в веб-приложении, и воспользоваться всеми преимуществами отложенной загрузки, но в какой-то момент вы хотите, чтобы пользователь «сохранил» или «отменил» и перешел к чему-то другому, и это часто является хорошим местом для завершения сеанса.

Использование одного сеанса в приложении может привести к кешированию большого количества материала, а данные на стороне клиента могут устареть или могут возникнуть проблемы с параллелизмом.

Кроме того, как только сеанс встречает исключение, оно перестает быть допустимым, и вам придется отказаться / сбросить все, что вы делали. Если это одна форма, это не имеет большого значения, но если в вашем приложении много объектов, ссылающихся на один и тот же сеанс, все они будут в скомпрометированном состоянии.

1 голос
/ 01 декабря 2010

Да. Сессия должна быть как можно более короткой, поскольку она рассматривается как единица работы.

Поэтому я бы создал сеанс для «варианта использования». (Вариант использования может охватывать несколько форм).

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