강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

djccnt15님의 프로필 이미지
djccnt15

작성한 질문수

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

3장. 작전1: 관계형 데이터베이스 읽고 쓰기 (테이블의 심장에 처형장을 세우다 ☠️)

Spring Data JPA 사용 시 자동 주입 관련 질문

작성

·

14

·

수정됨

1

킬구형 Spring Data JPA 사용하면 JpaRepository 인터페이스를 사용해서 PlatformTransactionManager, DataSource를 자동으로 주입받아 사용할 수 있는데, 강의에서는 스프링배치의 세밀한 조정을 위해 일부러 JpaRepository를 사용하지 않는 거야?

아래 두 강의에 둘 다 데이터소스와 트랜잭션매니저를 직접 활용하고 있어서 궁금해서 물어봐

  • 3장. 작전1: 관계형 데이터베이스 읽고 쓰기 (테이블의 심장에 처형장을 세우다 )

  • OPERATION DOUBLE TAP - Spring Batch Test


(추가) 생각해보니 예전에 아주 간단한 로직의 스프링배치 앱을 JpaRepository, JPQL을 이용해서 만들었던 만들었던 기억이 있는데,, 혹시 JpaRepository을 일부러 사용하지 않는 이유가 있는지 궁금해

답변 2

1

KILL-9님의 프로필 이미지
KILL-9
지식공유자

답변이 많이 늦어 미안하다 형 💀
퇴근 후 바로 확인했어야했는데 밥도먹고 하다 좀 늦었다 
어디 놀다온건아니니 이해바란다.

JpaRepository를 일부로 사용하지 않는다기보단, 이미 Spring Batch에서 자체적으로 JPA 관련 ItemReader / ItemWriter를 제공하기 때문에 이를 사용한다고 생각하면 된다.

JpaRepository를 사용하고싶다면 방법은 두가지이다

1) JpaRepository를 활용한 커스텀 ItemReader / ItemWriter 구현 - Spring Batch가 자체 제공하는 기능까지 직접 구현해야한다는 단점이있다
2) 챕터3 작전2의 마지막에서 살펴보게 될 RepositoryItemReader 등을 활용하는 방법이있다. 그러나 추천하지 않는다 페이징 방식에 한계가있고 이미 Jpa 계열 ItemReader가 있는데 부가적인 추상화 레이어를 거치는 방식이 만족스럽지 않다 Jpa를 원한다면 챕터3작전1에 링크한 갓 향로님의 github을 참고하라. 아니라면 그냥 Jdbc 계열 ItemReader를 권장한다(배치에서만큼은). 챕터3 작전1에서 느꼈겠지만 Jpa 계열 ItemReader에서는 불필요하게 고려해야할 세부사항이 상당하다. 

컨디션이 안좋아 킬구 스타일 말투를 사용하지못한점 양해바란다 날이 춥구나 💀💀 

0

안녕하세요, 인프런 AI 인턴입니다. djccnt15님께서 질문하신 주제는 Spring Data JPA와 Spring Batch에서 직접 DataSourcePlatformTransactionManager를 활용하는 이유에 대한 것 같습니다.

질문 요약

강의에서 JpaRepository를 사용하지 않고 직접 DataSourcePlatformTransactionManager를 설정하는 이유에 대해 궁금해하셨습니다.

Spring Batch에서의 설정

JpaRepository는 Spring Data JPA가 제공하는 리포지토리로, 트랜잭션 및 데이터 작업을 간편하게 처리할 수 있습니다. 하지만 Spring Batch에서는 다음과 같은 이유로 직접적인 설정이 요구될 수 있습니다:

  1. 세밀한 트랜잭션 관리: Spring Batch는 배치 처리의 본질상 트랜잭션 관리가 중요합니다. 각 스텝의 처리를 별도로 관리하며, 재시도 기능을 위한 적절한 트랜잭션 경계 설정이 필요합니다.

  2. 대규모 데이터 및 성능 최적화: 배치 작업은 대량의 데이터를 처리함으로써 성능이 중요한 요소입니다. 전용 설정을 통해 성능을 최적화하고 병목 현상을 줄일 수 있습니다.

  3. 유연한 데이터 소스 관리: 복수의 데이터 소스 및 특별한 데이터베이스 설정이 필요한 경우가 많습니다. Spring Batch는 이러한 상황에서 더 많은 유연성을 제공합니다.

일반적인 JpaRepository 사용

간단한 배치 작업에는 JpaRepository를 통한 자동 주입이 유용할 수 있습니다. 하지만 강의에서는 학습 목적으로 다양한 상황을 고려해 수동 설정 방법을 익히도록 하고 있습니다.

관련 자료

이와 관련된 구체적인 설정과 배경에 대한 이해를 돕고자 관련 질문 답변을 참조해 보시기 바랍니다.
- Spring Data JPA와 트랜잭션 관리

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

djccnt15님의 프로필 이미지
djccnt15
질문자

답변 고마운데 링크 들어가면 404에러 뜨잖아...

djccnt15님의 프로필 이미지
djccnt15

작성한 질문수

질문하기