Spring Batch: Running a Batch Job Explained
To run a batch job, a JobLauncher needs a batch JobConfiguration and JobParameters. This creates a JobInstance.
A JobInstance creates a JobExecution. If the job fails and is restarted it retains the same JobInstance but creates a new JobExecution.
A JobExecution runs one or more steps in the Batch_Step_Execution table.
So each new run of a batch job creates a new batch job instance, and each restart creates a new job execution.