Hibernate + Swing - PullRequest
       33

Hibernate + Swing

12 голосов
/ 18 мая 2009

Какая лучшая практика?

  • Один сеанс для всего приложения
  • сеанс за окно
  • сеанс для каждого потока и случайное отключение всего
  • Что-то еще?

Я погуглил, и единого мнения нет. Все что-то говорят, а потом забирают. Я считаю, что тащить сессию вокруг глупо ...

Итак, в чем же дело?

Ответы [ 13 ]

0 голосов
/ 25 мая 2009

Поскольку создание сеансов в Oracle обходится дорого, и я в основном использую Oracle в качестве СУБД, я бы выбрал «один сеанс для всего приложения». «Один сеанс на обработку события» кажется нелепым в контексте приложения с графическим интерфейсом. Есть причины сделать это в Интернете, но эти причины обычно не применяются для программы с графическим интерфейсом.

0 голосов
/ 21 мая 2009

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

Я склонен делить мой код на более низком уровне на класс, который имеет дело с таблицей или каким-либо другим объектом, а затем над ним будет контроллер, который знает, как общаться с несколькими даосами. Например, чтобы разместить заказ на книгу, вы проверяете, есть ли он в наличии, затем обрабатываете платеж, затем уменьшаете позицию и размещаете заказ. Это будет транзакция, охватывающая несколько даосов, поэтому они должны использовать один и тот же сеанс.

Но использование одного соединения было бы проблематичным, так как вы на некоторое время связываете соединение и можете потерять соединение, предполагая, что оно все еще существует. Та же проблема будет усугубляться, если один запрос на экран или страницу.

Вы можете ознакомиться с некоторыми рекомендациями пользователей Spring, поскольку Hibernate, похоже, довольно популярен в этой среде.

0 голосов
/ 20 мая 2009

Я предпочитаю сеанс для каждой модели обновления. Это помогает избежать длительных сеансов, а также минимизирует общее количество созданий сеансов.

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