Самый простой способ использования Hibernate Sessions - PullRequest
1 голос
/ 21 декабря 2010

Я тренирую студенческий проект, который использует hibernate в качестве слоя персистентности.Из моих проектов на работе я уже достаточно хорошо знаком с Hibernate и могу использовать его с небольшими «неприятностями».Но в этом проекте у нас постоянно возникают проблемы с сессиями, устаревшими объектами, и 'объект был загружен из другой сессии' - ошибки.

Итак, что я ищу, так это самый простой способ использования сессий:

Идеально было бы:

  • Сеансы могут быть получены из любого места
  • Не должно иметь значения, был ли данный объект загружен сессией A и затем обновлен с помощью сеанса B

Это однопроцессное приложение с графическим интерфейсом.Текущая настройка для current_session_context_class является нитью.Но я использую статическое поле для переменной сеанса (которое, я думаю, вызывает некоторые из моих проблем) и извлекаю его только ОДИН РАЗ.

Спасибо за вашу помощь!

Приветствия, Reto

1 Ответ

2 голосов
/ 21 декабря 2010

Предполагая, что вы не преподаете ORM, понимание , почему такие ошибки случаются, не является частью знания, с которым студенты должны уйти, и т. Д. И т. Д. И т. П., И вы просто хотите, чтобы Hibernate работал какобертка базы данных, чтобы они могли получать данные для использования при изучении других вещей.

Это, вероятно, ваш лучший выбор:

StatelessSession session = sessionFactory.openStatelessSession();

Сеанс без сохранения состояния - это "режим автоматической фиксации для ORM"и настолько близка к оболочке raw-JDBC, насколько позволяет hibernate.Нет сеансов, нет кэшей L1, нет контекста постоянства.Просто SQL / HQL, который возвращает объекты.

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