Сеанс Hibernate, сохраняющийся между запросами
Я работаю в системе, где вещи могут и будут меняться за пределами JPA, поэтому мне нужен новый сеанс для каждого запроса, но мое приложение JavaEE, развернутое в TomEE, сохраняет сеансы между запросами, в результате чего объекты, которые кешируются после был обновлен где-то за пределами приложения.
Я попытался создать cfg.xml и получить фабрику сессий таким образом, но меня встретили с исключениями. Я также попытался развернуть класс диспетчера сущностей, чтобы получить фабрику таким образом, но получил исключение, сказав, что класс нельзя развернуть. Я чувствую, что это может быть связано с тем, как TomEE и Hibernate взаимодействуют. Есть ли проблемы с моей текущей настройкой. Или я пытаюсь реализовать сеанс за запрос неправильно,
1 ответ
Проблема не в сеансе, а в кеше сеанса, поэтому вы можете сделать недействительным кеш сеанса:
session.refresh(entity)
тогда hibernate будет сравнивать данные базы данных и данные объекта сущности, если есть различия, тогда он снова выполнит SQL-запрос.
session.clear()
удалит все из кэша сеанса, поэтому вы не получите старые данные.