Spring 批存储库:JdbcJobInstanceDao

Spring Batch Repository: JdbcJobInstanceDao

我已经查看了 JdbcJobInstanceDao 的 grepcode 并找到了我正在努力理解的代码片段。

根据 Spring 批存储库架构,

CREATE TABLE BATCH_JOB_INSTANCE  (
    JOB_INSTANCE_ID BIGINT  NOT NULL PRIMARY KEY ,
    VERSION BIGINT ,
    JOB_NAME VARCHAR(100) NOT NULL,
    JOB_KEY VARCHAR(32) NOT NULL,
    constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
) ENGINE=InnoDB;

JOB_NAME 实际上是唯一的。但是在 JdbcJobInstanceDao#getJobInstances(String jobName, int start,int count) 方法中,对于相同的 JOB_NAME,它被视为条目列表可以存在于 BATCH_JOB_INSTANCE table 中。

有这种可能吗?请解释。

JOB_NAME 不是唯一的。 JOB_NAMEJOB_KEY(作业参数的散列)的组合是唯一的。

因此可以存在同一个作业的多个实例,只要它们具有不同的作业参数即可。