inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

스프링 배치 트랜잭션 관련 질문이 있습니다!

1200

이준혁

작성한 질문수 3

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요! job repository파트를 보고 궁금한 점이있어 문의드립니다.
job repository는 배치 메타 테이블에 배치 내용을 crud하기위해서 사용되고 이 과정에서 serializable단계의 트랜잭션이 발생한다고 배웠습니다. 그렇다면 step의 비즈니스 로직은 이 트랜잭션 하위에서 execute되니... step의 비즈니스 로직의 트랜잭션 전파레벨을 따로 설정하지 않는다면 모두 트랜잭션으로 동작한다고 이해해야하는걸까요?? 또 이런 상황이라면 비즈니스 로직의 트랜잭션 격리 수준은 serializable을 따르게되는 건가요?!

spring-batch spring-boot

답변 4

1

정수원

스프링 배치의 기본 격리수준은 serializable 입니다.

초기화 시 설정되고 있습니다. 

별도의 트랜잭션을 설정하지 않으면 기본 격리수준을 따르게 됩니다.

이는 두개의 잡이 동시적으로 실행될 경우 동시성 문제를 해결하기 위함입니다.

다만 강의에서도 소개하지만 격리수준은 필요에 의해서 재설정 가능합니다.

BasicBatchConfigurer 를 상속해서 createJobRepository() 메서드를 다시 정의하면 됩니다.

강의를 참고해 주시기 바랍니다.

 

0

이준혁

답변 감사합니다 ㅎㅎ

제가 우려하는 것은 같은 datasource를 사용하면 같은 트랜잭션 매니저를 공유하게되고

비즈니스로직상 트랜잭션 사용을 원하지 않는 부분도 스프링 배치로 인해 트랜잭션이 걸리지 않을까하는 궁금증이었습니다

0

정수원

음..

스프링 배치에서 트랜잭션 매니저는 별도로 생성하지 않으면 하나의 DataSource 와 연결되어 있을 경우 동일한 것을 사용합니다.

일반적으로 이기종 DB 나 서로 다른 Datasource 를 구성해야 할 경우 트랜잭션 매니저를 구분해서 사용합니다.

스프링 배치도 마찬가지로 트랜잭션 매니저를 여러 개 사용해야 할 상황이 발생한다면 모르겠으나 그렇지 않다면 기본 설정대로 하더라도 문제 없을 것 같습니다.

동일한 Datasource 를 사용함에 있어서 다른 트랜잭션 매니저를 사용해야 할 이유는 없어 보입니다.

0

이준혁

BasicBatchConfiguration 클래스를 보면 BatchConfigurer bean이 없을 때만  BasicBatchConfigure를 사용하는 걸로 보입니다. BatchConfigurer중에 DefaultBatchConfigurer라는 클래스가 있다는 것도 알게됐는데요.

이 클래스를 사용하면 데이터 소스로부터 새로운 트랜잭션 매니저를 생성하고 배치에 사용하는걸로 이해했습니다.

그렇다면, 실무에서 사용할 때 비즈니스 로직의 트랜잭션 매니저가 공유되는 BasicBatchConfigurer를 사용하는 것 보다 새로운 트랜잭션 매니저를 사용하는 DefaultBatchConfigurer를 사용해서 트랜잭션 매니저를 분리하는게 좋을 것 같은데 혹시 어떤걸 추천하시는지 궁금합니다.

스프링 배치 버전 질문

0

119

1

소스코드가 어디에 있나요?

0

95

2

트랜잭션 예외

0

90

1

질문이 있습니다.

0

128

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

124

2

여러 JOB 설정하는법

0

148

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

185

2

특정 job만 실행

1

247

1

Batch 성능 질문

0

151

1

ItemReaderAdapter 종료

0

78

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

178

2

Spring Batch 배포 질문

0

245

2

spring batch 버전

0

235

2

retry count 관련 질문

0

170

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

327

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

233

2

Multithread step과 AsyncItemProcessor

0

201

2

job 재실행

0

250

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

182

1

Multi-threaded-step과 Partitioning 차이 확인

0

171

2

jdbcCursorReader, jdbcPagingReader 질문

0

142

1

step muti-thread 질문

0

106

1

itemSteam open update close 질문

0

109

1