我正在使用HSQLDB持久存储Spring Batch元数据表。 通过在Spring Batch应用程序中提供2个数据源,我已经成功实现了它!
我所担心的是,如果春季批处理始终在执行任务,内存数据库将无限增长!
我想在开始第一份工作之前清除数据库表或重置内存数据库!
请帮助我实现这一点。
答案 0 :(得分:1)
Spring batch / Boot中没有提供开箱即用的实用程序。如果确实需要截断spring batch meta数据表,则必须手动进行。
可能您可以定义一个单独的作业,以固定的时间间隔手动执行此操作,或者可以添加一个单独的步骤,以清除第一个批处理作业中的元数据表。
答案 1 :(得分:0)
如果要在作业之前或之后执行某些操作,则需要实现JobListener并将所需的DAO逻辑添加到beforeJob()方法。
但是,我不认为您不想这样做,或者就此而言,将内存数据库用于Spring Batch。这些表包含所有的工作和审计跟踪数据,当您接到支持电话或询问有关他们认为丢失或有问题的记录的人员时,将希望这些数据。如果您没有该工作或审核数据,则将无法跟踪发生了什么事情以及何时发生。
公共类JobResultListener实现JobExecutionListener {
public void beforeJob(JobExecution jobExecution) {
someDao.clearBatchTables();
}
public void afterJob(JobExecution jobExecution) {
}
}
答案 2 :(得分:0)
HSQLDB数据库中的数据在模式中。您可以删除架构,删除所有表格。
DROP SCHEMA PUBLIC CASCADE
或者,您可以截断模式,这将保留表但删除表中的数据。
TRUNCTATE SCHEMA PUBLIC AND COMMIT NO CHECK
如果删除PUBLIC模式,它将重新创建为空模式。请参见指南:http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_truncate_statement