Hibernate: Можно ли сделать автоматическую очистку при фиксации транзакции?

У меня есть много отдельных функций, и я обязан выполнить session.clear () для транзакции.commit () в каждой из них для освобождения памяти.

Возможно, я ошибаюсь, но я думаю, что session.clear () в спящем режиме не вызывается по умолчанию для Transactions.commit ().

Я хотел бы знать, есть ли какой-нибудь способ, которым я мог бы, вероятно, настроить hibernate для автоматической очистки сеанса при каждой транзакции.mit (), даже не делая session.clear()?

Любое другое решение вышеуказанной проблемы будет высоко оценено.

1 ответ

Решение

Он называется шаблоном сеанса на транзакцию: вы создаете сеанс, когда начинаете транзакцию, и закрываете его после фиксации (обратите внимание, что очистка сеанса и фиксация транзакции имеет почти тот же эффект, что и закрытие сеанса, особенно если вы используете пул соединений),

Если вы используете Hibernate в автономной среде, вам необходимо настроить контекстные сеансы с hibernate.current_session_context_class = thread, В этом случае контекстная сессия (полученная getCurrentSession()) будет автоматически закрываться при фиксации транзакции.

Если вы используете EJB или Spring Framework, вы можете использовать средства управления транзакциями, предоставляемые этими платформами. Они также поддерживают эту модель.

Другие вопросы по тегам