Mybatis forEach로 쓰는것과 Service에서 for문으로 Mapper 호출 중에 고민입니다
470
작성한 질문수 2
최근 회사에서 Mybatis로 개발중 고민이 생겨서 문의 드립니다.
Mybatis로 forEach 사용하여 List를 Insert, Update 할때는
에러나면 몇번째 index에서 에러 났는지 알수없음으로
Service 단에서 List 길이 만큼 for문 돌려서 Mapper를 쓰잔 의견을 받았습니다
Service 단에서 for문으로 돌리면 log도 찍을수 있고, 어떤 index에서 에러났는지도
확인 할 수 있단 장점이 있다고 들었습니다
Mybatis에서 forEach 쓰는것과, Service에서 for문 돌려서 Mapper 호출 계속 하는것중에 뭐가 맞는건지 알 수 있을까요?
주니어 개발자인데 회사에 Spring 사용하는 시니어 개발자분이 없어서 문의드립니다..
답변 1
0
안녕하세요. 임현정님, 공식 서포터즈 y2gcoder입니다.
Mybatis forEach 문을 사용해서 어떤 쿼리를 만드느냐에 따라 들려드릴 수 있는 답변이 다를 것 같습니다!
저는 주로 Mybatis 의 forEach 문을 사용하는 것은 보통 IN 절 쿼리를 만들어줄 때 였던 것 같습니다. 이 때는 파라미터로 이미 정리된 컬렉션이 넘어오기 때문에 해당 영역에서는 forEach 문을 사용하는 것이 좋았던 것 같습니다.
다만 단순 IN 절이 아닌 로직적인 처리가 필요하다고 하면 고민이 들 것 같습니다.
이 때는 트레이드 오프를 따져봐야 할 것 같습니다 🙂
예를 들어 개별 요소의 성공 여부와 오류 추적을 하는 것이 중요하다면 서비스 단에서의 for문을 선택할 것 같습니다. 반면에 단순 IN 절이거나 성능이 중요한 요소라면 1개의 쿼리로 보낼 수 있는 Mybatis forEach 를 고민해볼 것 같습니다 🙂
감사합니다.
RepositoryTest의 패키지 위치가 domain인 이유
0
29
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
29
1
update()에 사용하는 setter 질문드립니다.
0
47
1
SQL 중심적 개발의 문제점에 대한 질문
0
72
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
83
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
173
1
@repository 어노테이션
0
89
3
ItemService
0
58
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
54
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
178
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
77
1
@EventListener(ApplicationReadyEvent.class) 관련
0
88
1
트랜잭션 동기화 매니저와 데이터 소스
0
76
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
94
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
112
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
83
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
72
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
102
1
커스텀aop와 트랜잭션을 같이 사용할때 우선순위에 관한 질문
0
98
2





