Сброс базы данных в памяти в Spring Batch - PullRequest
0 голосов
/ 20 марта 2019

Я использую HSQLDB для сохранения таблиц метаданных Spring Batch.Я успешно реализовал это, предоставив 2 источника данных в своем приложении Spring Batch!

Все, что меня беспокоит, - это то, что база данных в памяти может расти бесконечно, если весенний пакет всегда работает и выполняет задания!

Я хочу очистить таблицы базы данных или сбросить базу данных в памяти перед началом моей первой работы!

Пожалуйста, помогите мне реализовать это.

Ответы [ 3 ]

1 голос
/ 20 марта 2019

В Spring batch / Boot нет встроенной утилиты. Если вам действительно нужно урезать таблицы метаданных пружинных пакетов, вам нужно сделать это вручную.

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

0 голосов
/ 26 марта 2019

Данные в базе данных HSQLDB находятся в схемах. Вы можете удалить схемы, которые удаляют все таблицы.

DROP SCHEMA PUBLIC CASCADE

В качестве альтернативы вы можете TRUNCATE схемы, которая хранит таблицы, но удаляет данные в них.

TRUNCTATE SCHEMA PUBLIC AND COMMIT NO CHECK

Если вы отбросите схему PUBLIC, она будет воссоздана как пустая схема. См. Руководство: http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_truncate_statement

0 голосов
/ 20 марта 2019

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

Как бы то ни было, вы не хотите, чтобы вы это делаличто, или в этом отношении использовать базу данных в памяти для Spring Batch.Эти таблицы содержат все данные отслеживания работы и аудита, которые вы захотите получить, когда будете получать звонки в службу поддержки или людей, спрашивающих о записях, которые, по их мнению, были утеряны или имели какую-то проблему.Если у вас нет этой работы или данных аудита, вы не сможете отследить, что и когда произошло.

открытый класс JobResultListener реализует JobExecutionListener {

public void beforeJob(JobExecution jobExecution) {
    someDao.clearBatchTables();
}

public void afterJob(JobExecution jobExecution) {
}

}

...