스프링 배치를 사용하면서 언제, 어떻게 호출하고 실행시킬지에 대한 고민을 해야 합니다. 배치는 일괄적인 처리를 위해서 단독으로 사용되기도 하지만 실제 업무에서는 스케줄러와 같이 사용되는 것을 자주 볼 수 있습니다.
그렇다면 스케줄러 이외에 어떤 경우에 배치를 호출할까요? 클라이언트가 특정 URL 주소를 접근하게 되었을 때에도 사용합니다.
코드 내 Controller에서 해당 Service를 호출하고 Service에 특정 Batch를 호출하여 사용합니다. 배치(Batch)라고 떠올리실 때 '특정 시간에 특정 작업을 하는 것'이라고 생각하시면 안 됩니다.
배치는 데이터들을 일괄적으로 처리하기 위한 작업이며, 특정 일자나 특정 시간에 맞춰 작업을 하는 것은 스케줄러(Scheduler)입니다. 배치를 실행하고 특정 테이블(A)에 영향을 미치게 된다면, 특정 테이블(A) 에 걸려있는 트리거(Trigger)가 실행되고 예상치 못한 결과를 가져오기도 합니다.
배치를 사용하는 것은 일관성을 보장해...
원문 링크 : Batch Scheduler