본문 바로가기

Data/MyBatis

ResultMap은 반드시 써야 하나?

 MyBatis를 배우면서 resultMap에 대해서 배웠다. select, update 같은 구문으로 데이터를 가져오고 resultMap으로 DTO에 넣는 방식이었다. 배울 당시에는 아무런 생각이 없었는데, 현업에서는 막상 쓰는 사람도 있고 안 쓰는 사람도 있어서 궁금함이 생겼다.

 

resultMap을 사용안해도 데이터를 가져올 수 있다면 왜 존재하는 거지?

MyBatis 공식 홈페이지에서는 엄청나게 강력한 기능이라고 자랑까지 하던 기능인데 말이다.

 

핵심 키워드는 '자동'이었다. 쿼리를 자동으로 짤 수 있을 정도로 정형화되고 단순한 쿼리라면 일반 select 문으로도 충분하다. 하지만, 서브 쿼리를 깊게 파고들고 조인에 조인이 이어지고 여기저기 누더기처럼 엮어있고 데이터 양도 방대하다면 자동으로 짜는 쿼리는 매우 비효율적이거나 완성조차 안 될 수 있다고 한다.

 

이런 경우 수동으로 프로그래머가 쿼리를 짜야 한다. 백엔드에서 직접 쿼리를 짜는 기능이 바로 resultMap 기능이다. 즉, 간단한 조회나 업데이트 같은 기능에는 굳이 넣을 필요가 없는 기능이라는 말이 된다.

 

말로만 들었던, 포털 사이트의 500 줄이 넘어가는 쿼리문 같은 구조에는 resultMap 기능을 적극적으로 활용하지 않았을까? 아니면 알고리즘이 복잡하거나 말이다.