Мониторинг восстановления данных в спящем режиме Java - PullRequest
2 голосов
/ 14 декабря 2011

Допустим, у меня есть JPA, например

SELECT x FROM Person

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

Спасибо.

1 Ответ

0 голосов
/ 14 декабря 2011

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

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

Таким образом, все, что вы могли бы сказать, может быть, когда Hibernate завершил загрузку результатов из базы данных и когда он создал / обновил все необходимые объекты.

В качестве альтернативы, вы можете попытаться загрузить объекты в пакетах, то есть сначала получить количество результатов, а затем загрузить отдельные фрагменты (например, 0-99, 100-199, ...). Так как вы знаете количество результатов, вы можете рассчитать количество блоков, а между ними вы можете обновить индикатор выполнения. Однако обратите внимание, что это снизит производительность, особенно если запрос довольно сложный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...