본문 바로가기

Java/mybatis

autoMappingBehavior 와 mapUnderscoreToCamelCase 속성의 차이

마이바티스 환경 설정 파일에 정의된 구성 요소 가운데 작동 방식을 결정할 때 사용되는 <settings /> 구성 요소가 있다.


<settings /> 구성 요소에 사용 가능한 속성을 사용하면, 사용자가 원하는 방향으로 마이바티스 작동 방식을 지정할 수 있다. 이러한 속성 중 autoMappingBehavior 속성과 mapUnderscoreToCamelCase 속성이 있다.


autoMappingBehavior 속성은 조회된 결과를 컬럼 명과 일치하는 자바 프로퍼티 사이에 자동 매핑 설정할지 여부를 지정한다. 기본 설정은 활성(true) 상태이다. 그리고 mapUnderscoreToCamelCase 속성은 언더바(_)로 구분되는 데이터베이스 컬럼 명과 낙타 표기 형식을 따른 자바 프로퍼티를 자동 매핑할지 여부를 지정한다. 기본 설정은 비활성(false) 상태이다.


일반적인 사용자들은 위해서 설명한 두 개의 속성이 비슷하다고 생각하고 별다른 생각없이 사용하는 것으로 추측된다. 하지만 두 개의 속성은 엄연히 다른 기능을 지원하는 셋팅 속성이다.


autoMappingBehavior 속성은 컬럼 명과 프로퍼티 명의 대소문자에 상관없이 자동 매핑하도록 지원하는 설정이며, mapUnderscoreToCamelCase 속성은 매핑 과정에 언더바(_) 속성을 제거하는 행위를 한다.


따라서 데이터베이스 컬럼 명에 별도의 알리아스(Alias, 오라클 기준 'AS' 키워드)를 사용하지 않고 자바빈즈 객체, 맵 객체에 낙타 표기 형식의 프로퍼티에 정상적으로 바인딩하기 위해서는 아래와 같이 mapUnderscoreToCameCase 속성 값을 'true'로 설정해야 한다.


<setting name="mapUnderscoreToCamelCase" value="true" />


출처 : 마이바티스 페이스북 그룹(MyBatis facebook group)