Спящий режим: симуляция перед промывкой - PullRequest
0 голосов
/ 05 февраля 2019

Однажды в нашем приложении можно отредактировать некоторые сложные данные, нажать сохранить и получить некоторые результаты исчисления.

Теперь мы бы хотели, чтобы пользователь мог получать эти результаты без фактического сохранения данных в БД - что позволяет пользователю отменить действие, если результаты не в порядке.Есть ли способ сделать это с Hibernate (или любой другой метод / инструмент / рабочий процесс)?Что-то вроде «создать сеанс, не допуская очистки»?

Наши бизнес-сервисы в значительной степени полагаются на DAO для выполнения этих вычислений - в настоящее время единственное, о чем мы можем думать, это на самом деле сохранять измененные данные, вычислять результаты,затем удалите временные данные и отправьте результаты обратно.Если пользователь подтверждает, что он хочет продолжить, реальные данные сохраняются, и исчисление обрабатывается еще раз (с риском изменения данных в это время ..)

Спасибо.

1 Ответ

0 голосов
/ 05 февраля 2019

Создание сеанса, который может длиться так долго, может привести к проблемам в пуле соединений.

Для этого вы можете просто вернуть объект без сохранения и получить еще одну запись в вашей системе, которая позволяет вам сохранятьполученный объект (с некоторой предыдущей проверкой).

Таким образом, вы избегаете сеанса клиента, который содержит данные перехода;вы управляете завершенными сущностями: после вычисления вы возвращаете полную сущность, а после проверки клиента вы получаете завершенную сущность.

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

...