inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

대량 학살이 시작된다... 데이터베이스 심판의 시작 💀

메타테이블에 데이터가 생기지 않는 이유

107

작성자 없음

작성한 질문수 0

1

킬구형 내가 그동안 보면서 정리한내용으로, 실습을 진행해보려고 혼자 스스로 파일을 만들었어.

 

실습 환경은 h2 데이터 베이스로 테스트 했고,

메타테이블은 자동으로 만들어졌어.

 

간단한 스텝과 잡을 만들어서 콘솔에서 잘 실행되는것 까지는 확인을 했는데

 

실제 데이터 베이스 테이블인 batch_job_instance와 같은 테이블에는 데이터가 들어가지 않아.

 

혹시 몰라서 db url도 확인해봤는데 정확하게 일치하고..

 

이런경우는 어디를 확인해보면 제일 좋을까..?

 

콘솔에서 에러도 나지 않고 정상적으로 배치가 실행돼서 답답해 미치겠어 ㅠㅠㅠ

콘솔에서 insert 쿼리는 안나가고 있는데, 쿼리가 왜 안나가는지를 도통 모르겠어 ㅠㅠ

 

다 잘되는데 메타테이블에만 데이터가 들어가지 않네..

 

참고로 tasklet 방식으로 테스트 해봤어.

부트 4.0.1 버전 사용하고 있어

 

 킬구형 강의자료 에서도 중간에 postgresql로 전환하던데 혹시 h2는 뭔가 지원을 하지 않는걸까?

java spring spring-boot spring-batch backend

답변 2

1

KILL-9

반갑다 ang형

부트4 배치6??

build.gradle에 단서가있을것같다

파일 내용좀 전달달라 💀💀

1

KILL-9

굿굿 starter-batch말고 starter-batch-jdbc를
사용하도록 💀

자세한 내용은 배치6강의 5장을 참고하라

1

KILL-9

FYI. ResourcelessJobRepository / JdbcDefaultBatchConfiguration

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

ang11585님께서 H2 데이터베이스를 사용하여 Spring Batch를 테스트하시는 중에 메타 테이블에 데이터가 들어가지 않는 문제가 발생한 것 같습니다. 배치가 정상적으로 실행되지만 메타 테이블이 업데이트되지 않는 부분은 다소 특이한 상황일 수 있습니다. 아래에 몇 가지 확인해볼 사항을 안내드립니다.

확인해야 할 사항

  1. 트랜잭션 설정 확인:

    • Batch 작업이 트랜잭션에서 커밋되기 전에 종료되거나 트랜잭션 관리가 잘못 설정되면 데이터가 메타 테이블에 반영되지 않을 수 있습니다. @Transactional이나 트랜잭션 전파 옵션이 제대로 설정되어 있는지 확인하세요.
  2. JobRepository 설정:

    • Spring Batch가 사용하는 JobRepository 설정을 확인하세요. 저장소가 올바르게 구성되지 않았을 경우 메타데이터가 저장되지 않을 수 있습니다. 인메모리 데이터베이스를 사용할 때도 URL, 사용자명, 비밀번호가 정확한지 확인하세요.
  3. 잘못된 Console output 확인:

    • 배치 실행 로그에서 SQL 디버그 레벨(LOG_LEVEL_SQL)로 설정하고, 실제 수행된 쿼리를 확인해보세요. 데이터베이스로 명확한 쿼리가 전달되고 있는지 확인이 필요합니다.
  4. H2 데이터베이스의 in-memory 특성:

    • H2 데이터베이스를 인-메모리로 사용하고 있을 수 있습니다. 이 경우 애플리케이션 종료시 데이터가 유지되지 않는 특징이 있습니다. 데이터베이스 URL이 jdbc:h2:mem:test와 같은 형태가 아니라 jdbc:h2:~/test처럼 파일로 저장되도록 설정했는지 확인하세요.
  5. Tasklet의 완결성:

    • Tasklet이 정상적으로 종료(정상적인 리턴 상태가 포함되어 있는지)되었는지 확인해 보세요. 만약 RepeatStatus.FINISHED로 리턴되지 않았거나 예외를 처리하고 다시 던지지 않았다면 상태가 반영되지 않을 수 있습니다.

참고 자료

유사한 문제가 다루어진 내용을 포함한 문서나 토론은 다음 URL에서도 확인할 수 있습니다:
- Spring Batch job 도중 메타데이터 저장 이슈 관련 토론

질문자님의 문제 해결에 도움이 되기를 바라며, 추가적인 질문이 있으시면 언제든지 다시 문의해 주세요. 곧 지식공유자님께서 함께 도움을 주실 것입니다. 참고로 이는 베타 기능이며 답변이 완벽하지 않을 수 있는 점 양해 부탁드립니다. 🙏

Json 요청 처리

1

33

2

[건의][6장][작전1] deprecated 메소드

1

48

2

[예제][3장][작전2] windows 에서 마지막 예제

0

38

1

[오타][3장][작전1] 형 이건 빨리 해줘

2

95

2

[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분

1

61

1

[오타] "JobScope와 StepScope 사용 시 주의사항" 부분

1

68

2

spring boot 4 + spring batch 6 설정 변경?

1

99

2

Batch 패키지 설계 — 실무에서 Job 단위 구조

1

96

1

Spring batch를 실행해줄 스케줄러와 batch 실행 환경

1

89

1

Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의

1

106

2

@StepScope 또는 @JobScope와 JobOperator

1

148

5

Remote Partitioning

1

112

2

킬구형 실무에서는 JPA ItemReader / ItemWriter를 더 선호해? 아니면 JDBC itemReader/ItemWriter를 더 선호해?

1

137

2

병렬 중첩

1

103

3

형 코드에 public static class 이게 뭐야 ?

1

136

3

ExitStatus

1

67

2

Batch6: jobOperator.startNextInstance() throws UnexpectedJobExecutionException

1

126

5

jdbc 커서, 페이징에서 일대다 관계 데이터 뻥튀기 조회 처리 방법 질문

1

120

2

SkipPolicy는 여러번 불릴 수 있는가?

1

52

2

형 실무에서 배치 시스템은 어떤 식으로 HA를 구성해??

1

106

1

메타데이터 관리

1

64

2

2장. 작전2: 분산 서버 로그 처형 작전 Resource[]의 대체방안(읽어야할 내용이 매우 커지면?)

1

84

3

2장. 작전2: 분산 서버 로그 처형 작전 (시스템에 의존적인) SystemCommandTasklet 관련 질문

1

97

2

CommandLineJobRunner를 통한 실행

1

86

2