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

임현정님의 프로필 이미지

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

Mybatis forEach로 쓰는것과 Service에서 for문으로 Mapper 호출 중에 고민입니다

작성

·

254

·

수정됨

0

 

최근 회사에서 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 를 고민해볼 것 같습니다 🙂

 

감사합니다.