[Spring] MyBatis의 ResultMap

반응형

 

 

Spring, MyBatis의 resultMap

 

 

 

  MyBatis란?

 Spring이 지원하는 DAO, JTBC 기능 중 하나로 DB와 연결되는 부분 중 하나이다.

SQL 문법 그대로 사용할 수 있다는 장점이 있어서 인기가 좋으며, 가독성 또한 월등하니 우리나라에서 많이 사용하는 형식이다.

 

 

  MyBatis의 오류

 여기서 MyBatis는 해당 Bean 혹은 VO의 위치가 어딧는지를 모른다.

이 글을 읽는 독자 또한 저 TestVO가 무엇인지, 어느 패키지 장소를 구분하기란 어렵다.

 

이 부분을 해소시키기 위해서 resultMap이 있다.

 

<resultMap id="mainList" type="java.util.hashmap"></resultMap>

resultMap이 Mybatis에서 사용하는 Type의 위치를 어딧는지, 무엇인지 알려주는 기준점이 된다.

 

이 resultMap기능을 안 쓸 경우 사용하는 VO가 어딧는지를 명확히 구분해주어야 한다.

그렇지 않는다면, Java는 해당 SQL의 result값, parameter값을 주고 받을 수 없다.

 

 

 

그러나, 이 방법에 대해서는 잘 사용하지 않는 방법이다

 

  1. VO 혹은 bEAN은 아무리 작은 프로젝트라고 하더라도 최소 2개 ~ 10개 이상은 소유한다.
  2. resultMap은 중복 사용이 안된다.
  3. mapper에 필요한 VO를 만들기 전에 정의하기란 어렵다.
  4. resultMap 대신해서 사용할 수 있는 설정이 많다.
  5. 설정을 .xml(Mapper)에 보관하기에는 매우 부적합하다.

 

위와 같은 이유로 쓰이기도 하지만 자주 보기란 매우 어렵다.

또한 이것 또한 MyBatis의 설정의 일부이기에 Spring의 설정으로 간주하여 mapper에 설정하는 경우는 없다시피 하다.

프로젝트의 설정문서는 매우 중요하기 때문에 이곳저곳에 흩어놓았다가는 향후 문제가 발생될 원인을 제공하기 때문이다.

 

 

마지막으로 resultMap의 id는 중복사용이 제한된다.

Spring의 Version에 따라 다르기에 최신버전이면 문제가 없으나 아직까지 구 버전을 사용하는 곳이 있는 만큼 무조건 이런일은 없다고 말하기란 어렵다.

 

 

  ambiguos in Result Map collection

resultMap의 id가 중복되어 발생된 에러이다.

향후 사용할 때는 매우 조심하도록 하자.

반응형

댓글

Designed by JB FACTORY