org.hibernate.Session.clear () считается Вредным?

Это вопрос дизайна, конкретный код не отправлен для защиты моей внизу.

При работе с Hibernate стандартный рабочий процесс выглядит следующим образом:

  1. Открыть сеанс
  2. Начать транзакцию
  3. Вести бизнес (читать и изменять данные)
  4. Подтвердить транзакцию
  5. Закрыть сеанс

с возможными итерациями до 2-4.

Каковы разумные варианты использования Session.clear ()?

A: Конкретная проблема, с которой я столкнулся, - это (большой) фрагмент кода, который загружает и изменяет объекты, а затем очищает () в сеансе, по сути, отбрасывая внесенные изменения. (Бизнес-задача, которая должна быть выполнена, не включает в себя изменение сущностей, поэтому код «работает»).

Мне кажется, что правильным дизайном было бы сделать уверены, что (большой) фрагмент кода не вносит изменений, которые он не хочет сохранять?

B: Я предполагаю, что Session.clear () существует для удобства / гибкости, а не потому, что это хорошая идея.

Я неправильно понял философию гибернации?

C: Подвопрос: Является ли для кода фреймворка плохой идеей безоговорочно clear () сеанс после завершения задачи? ИМХО, фреймворк должен жаловаться, если сеанс грязный после завершения задачи! Сессию следует закрыть, поскольку задача выполнена ... (Без учета производительности в течение минуты)

(Метки A, B и C, чтобы вы могли указать, на какую часть ответа вы отвечаете).

27
задан Morten Lauritsen Khodabocus 14 November 2011 в 07:20
поделиться