Spring Data JPA 사용 시 자동 주입 관련 질문
82
작성한 질문수 8
킬구형 Spring Data JPA 사용하면 JpaRepository 인터페이스를 사용해서 PlatformTransactionManager, DataSource를 자동으로 주입받아 사용할 수 있는데, 강의에서는 스프링배치의 세밀한 조정을 위해 일부러 JpaRepository를 사용하지 않는 거야?
아래 두 강의에 둘 다 데이터소스와 트랜잭션매니저를 직접 활용하고 있어서 궁금해서 물어봐
3장. 작전1: 관계형 데이터베이스 읽고 쓰기 (테이블의 심장에 처형장을 세우다 ☠)
OPERATION DOUBLE TAP - Spring Batch Test
(추가) 생각해보니 예전에 아주 간단한 로직의 스프링배치 앱을 JpaRepository, JPQL을 이용해서 만들었던 만들었던 기억이 있는데,, 혹시 JpaRepository을 일부러 사용하지 않는 이유가 있는지 궁금해
답변 2
2
답변이 많이 늦어 미안하다 형 💀
퇴근 후 바로 확인했어야했는데 밥도먹고 하다 좀 늦었다
어디 놀다온건아니니 이해바란다.
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에서 직접 DataSource와 PlatformTransactionManager를 활용하는 이유에 대한 것 같습니다.
질문 요약
강의에서 JpaRepository를 사용하지 않고 직접 DataSource와 PlatformTransactionManager를 설정하는 이유에 대해 궁금해하셨습니다.
Spring Batch에서의 설정
JpaRepository는 Spring Data JPA가 제공하는 리포지토리로, 트랜잭션 및 데이터 작업을 간편하게 처리할 수 있습니다. 하지만 Spring Batch에서는 다음과 같은 이유로 직접적인 설정이 요구될 수 있습니다:
세밀한 트랜잭션 관리: Spring Batch는 배치 처리의 본질상 트랜잭션 관리가 중요합니다. 각 스텝의 처리를 별도로 관리하며, 재시도 기능을 위한 적절한 트랜잭션 경계 설정이 필요합니다.
대규모 데이터 및 성능 최적화: 배치 작업은 대량의 데이터를 처리함으로써 성능이 중요한 요소입니다. 전용 설정을 통해 성능을 최적화하고 병목 현상을 줄일 수 있습니다.
유연한 데이터 소스 관리: 복수의 데이터 소스 및 특별한 데이터베이스 설정이 필요한 경우가 많습니다. Spring Batch는 이러한 상황에서 더 많은 유연성을 제공합니다.
일반적인 JpaRepository 사용
간단한 배치 작업에는 JpaRepository를 통한 자동 주입이 유용할 수 있습니다. 하지만 강의에서는 학습 목적으로 다양한 상황을 고려해 수동 설정 방법을 익히도록 하고 있습니다.
관련 자료
이와 관련된 구체적인 설정과 배경에 대한 이해를 돕고자 관련 질문 답변을 참조해 보시기 바랍니다.
- Spring Data JPA와 트랜잭션 관리
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
형 책 어떻게 받아?
1
59
1
JpaCursorItemReader의 정렬 조건 부재의 영향
1
46
2
"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션
1
53
2
형 이번에 낸 책이랑 강의 내용에 차이가 있어?
1
90
1
형 나 몰래 책내면 모를 줄 알고?
2
79
2
강의 중복 확인 요청
1
43
1
중복내용 제보?!
1
73
2
Json 요청 처리
1
69
2
[건의][6장][작전1] deprecated 메소드
1
78
2
[예제][3장][작전2] windows 에서 마지막 예제
1
71
2
[오타][3장][작전1] 형 이건 빨리 해줘
2
128
2
[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분
1
78
1
[오타] "JobScope와 StepScope 사용 시 주의사항" 부분
1
76
2
spring boot 4 + spring batch 6 설정 변경?
1
147
2
Batch 패키지 설계 — 실무에서 Job 단위 구조
1
128
2
Spring batch를 실행해줄 스케줄러와 batch 실행 환경
1
103
1
메타테이블에 데이터가 생기지 않는 이유
1
134
2
Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의
1
125
2
@StepScope 또는 @JobScope와 JobOperator
1
165
5
Remote Partitioning
1
120
2
킬구형 실무에서는 JPA ItemReader / ItemWriter를 더 선호해? 아니면 JDBC itemReader/ItemWriter를 더 선호해?
1
154
2
병렬 중첩
1
111
3
형 코드에 public static class 이게 뭐야 ?
1
151
3
ExitStatus
1
73
2





