Где установить Hibernate FlushMode? - PullRequest
1 голос
/ 29 января 2020

У меня есть проект IntelliJ, использующий Spring MVC и с Hibernate FlushMode, установленным по умолчанию на auto.
Проблема: когда я пытаюсь удалить объект из БД, используя веб-интерфейс, он работает нормально, но после того, как я это сделаю в третий раз, интерфейс перестает отвечать на запросы (даже несмотря на то, что Hibernate получает команду на удаление этого определенного объекта с определенным идентификатором), и мне приходится перезагружать мой сервер WildFly.

Любой Идея, где я могу это изменить? Есть ли способ установить его в файле конфигурации, или мне нужно вызвать метод для его установки? И даже если проблема в самом FlushMode. С уважением

ОБНОВЛЕНИЕ: После тестирования нескольких вещей, я думаю, я наконец нашел root проблемы. Если я получаю доступ к БД более трех раз подряд, сервер перестает отвечать на запросы. Как я могу преодолеть это?

ОБНОВЛЕНИЕ № 2: Я обнаружил, что проблема заключалась в том, что в Dao соединение было открыто, но никогда не закрывалось (не было строки "session.close ()" просто для Чисто). И это было причиной того, что после трех пулов из базы данных, было ли это, чтобы добавить элементы, удалить их или просто получить информацию, сервер перестал отвечать на запросы. Теперь все работает отлично!

1 Ответ

0 голосов
/ 29 января 2020

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

Чтобы ответить на ваш вопрос - как установитьFlushMode в hibernate:

  1. В случае, если вы используете EntityManager - > entityManager.setFlushMode (FlushModeType.) -> JPA поддерживает AUTO и COMMIT
  2. Если вы используете SessionFactory:
    • sessionFactory.setHibernateFlushMode (FlushMode.) -> Из спящего режима 5 ИЛИ
    • sessionFactory.setFlushMode (FlushMode.) -> До Hibernate 5 (ПРИМЕЧАНИЕ. Пожалуйста, проверьте документы для точной версии спящего режима, из которого setFlushMode устарела. Hibernate поддерживает 4 режима гриппа sh -> AUTO / COMMIT / ВСЕГДА / РУКОВОДСТВО
...