INFO
해당 동작 방식은 Spring Batch 6.0.6 기준이다.
JobOperator → JobRepository → JobExecution 생성 → Job → Step → Reader → Processor → Writer → Commit → 다음 Chunk → Job 종료
flowchart TD A["Scheduler / API / Command Line"] --> B["JobOperator"] B -->|"Job + JobParameters"| C["JobRepository"] C --> D["JobInstance 조회 / 생성"] D --> E["JobExecution 생성"] E --> F["Job 실행"] F --> G["Step 1 실행"] G --> H["Step 2 실행"] H --> I["..."] subgraph STEP["Chunk-Oriented Step"] G1["Chunk 시작"] G2["ItemReader<br/>데이터 1개씩 읽기"] G3["ItemProcessor<br/>데이터 가공"] G4{"Chunk Size만큼<br/>모였는가?"} G5["ItemWriter<br/>Chunk 단위 쓰기"] G6["StepExecution / ExecutionContext 갱신"] G7["Transaction Commit"] G8{"읽을 데이터가<br/>남았는가?"} G1 --> G2 G2 --> G3 G3 --> G4 G4 -->|"No"| G2 G4 -->|"Yes"| G5 G5 --> G6 G6 --> G7 G7 --> G8 G8 -->|"Yes"| G1 end G --> G1 G8 -->|"No"| H I --> J["JobExecution 상태 갱신"] J --> K["Job 완료"] C -. "Batch Metadata 저장" .-> M[("Batch Metadata DB")] E -.-> M G6 -.-> M J -.-> M
청크 내부 동작
