Spring진영의 대표적인 객체 매핑 라이브러리인

ModelMapper와 Mapstruct에 대한 얘기를 잠깐 해볼까 합니다.

 

대부분의 반복작업중 많은 부분을 차지하고 있는 것이 객체 간의 매핑/변환에 관련된 작업일 것입니다.

 

특히 Multi Layer(MVC) 구조가 일반적인 현재의 Java 어플리케이션에서는 

레이어 간 객체 매핑은 더 빈번하게 일어나게 되고,

외부와의 연계 및 MSA기반에서의 애플리케이션 간 연계가 점점 더 늘어가는 추세에 따라

서로 주고 받는 객체 간의 매핑과 변환작업은 당연히 더 늘어나는 상황입니다.

 

이런 작업들은 중요한 비즈니스 로직이 담기는 성격보다는

객체의 프로퍼티 값을 단순하게 매핑( get, set )하거나

일부 값의 형변환( Date -> String 등) 정도가 대부분인 성격의 작업입니다. 

  • 반복과 중복이 필연적으로 발생할 수 밖에 없는 작업입니다.

  • 매핑 코드에 대한 휴먼 오류가 발생할 가능성이 높을 수밖에 없는 작업입니다.

지금 언급하려고 하는 내용은

이런 작업들을 최대한 자동화해서,

발생할 수 있는 오류와 반복적인 작업들을 최소화하여 개발 생산성을 높일 수 있게 해주는

라이브러리에 대한 내용입니다.

 

이러 라이브러리들 중 대표적인 것들이 ModelMapper와 MapStruct 입니다. 

 

현재의 레거시 시스템에 적용하기 위해서

두 개의 라이브러리에 대해서 가볍게 리서치를 해 보았습니다. 

 

ModelMapper와 관련된 내용은 전에 올린 글이 있으니 참고해 보시면 됩니다.

yonguri.tistory.com/69?category=359079.

 

[스프링, 스프링부트]Entity, DTO, 그 사이의 ModelMapper 이야기

MVC기반에서 Model의 역할 - 영속성을 띈 Entity MVC기반으로 개발할때, 특히 MVC기반의 REST기반의 API 서버를 만들때는 View영역과 Reopository영역에서 사용되는 DatoModel을 분리해서 사용하는게 일반적이

yonguri.tistory.com

결론은 MapStruct를 적용하기로 했는데,

리서치를 하던 중에 개인적으로 흥미로운 내용이 있어, 기술적인 내용을 들어가기에 앞서 잠깐 언급을 하고 가겠습니다.


구글 트렌트로 알아본  ModelMapper 와 MapStruct의 지역별 관심도

최근 5년간의 지역별 관심도

최근 5년간의 지역별 관심도를 구글 트렌드로 보면  압도적으로 Mapstruct를 많이 사용하는데요.


특이한 것은 아시아 지역에서는 호주(사실 아시아라고 하기에는…)와 중국을 제외하고는

ModelMapper에 대한 관심도가 더 높게 나왔다는 겁니다.

최근 5년간의 관심도 추이

시간의 추이로 보더라도 ModelMapper의 경우에는 관심도가 크게 늘지 않는 반면,

Mapstruct의 경우는 관심도가 큰 폭으로 증가한 것을 알 수 있습니다. 

 

이 글에 이어 두 라이브러리에 대한 기술적인 내용도 언급할 텐데,

분명히 Mapstruct가 구현의 방식이라던가 성능적인 측면에서 좀 더 유리한 부분이 더 많이 있고

그렇기 때문에 관심도(선호도)가 상대적으로 올라갔다고 볼 수 있습니다. 

 

최근 5년간 국가별 ModelMapper 관심도

국가별로 보면
일본과 한국의 경우는 아직까지 Mapstruct보다 ModelMapper를 더 많이 사용하는 걸로 나옵니다.

(일본은 ModelMapper만 사용하는게 아닐까...)


무엇보다 새로운 기술이나 트렌드를 받아들이는 속도가 빠른 편인 한국의 개발자들이 ( 제 생각일 수도 있습니다.)
더 나중에 나왔고, 코드의 간결성이나 사용법이 더 직관적인 ( 제 생각일 수도 있습니다.)  Mapstruct의 관심도가 더 낮다는 건 

아무래도 다른 이유가 있는게 아닐까 하는 생각이 드는데요.

 

사실 저도 얼마전까지 ModelMapper를 계속 사용했었는데요.
저 같은 경우는 익숙함을 벗어나기 싫은 게으름에서 비롯된 것이라 예를 들기에는 적절하지 않을 것 같습니다.

 

아마 개발자의 성향보다 한 번 적용한 기술은 쉽게 바꾸지 않는 한국 IT기업의 성향이 수치로 더 많이 반영된 게 아닐까 추측해 봅니다.

 

 

사실 JPA의 전신인 Hibernate 가 한국에서는 MyBatis로 인해 그 전파력이 다른 나라에 비해 현저히 낮았다고 생각하는데
그런 배경과 비슷한 맥락이지 않을까 하는 생각도 듭니다.

 

Hibernate와 MyBatis의 최근5년간 지역별 관심도

역시 한국,중국,일본에서의 MyBatis 선호도가 타 지역보다 월등히 높은 수치임을 보여줍니다.

 

구글 트렌드 수치는 개인적으로 궁금해서 찾아본 것이고,

기술적인 내용을 다루기 전에 한 번 언급해 볼만 내용이라고 생각해서 올린 거라 참고로만 봐 주시기 바랍니다.

 

 

다음 글에서는 두 라이브러리의 기술적인 내용에 대해서 다뤄보도록 하겠습니다.

 

ModelMapper -modelmapper.org/

 

ModelMapper - Simple, Intelligent, Object Mapping.

Why ModelMapper? The goal of ModelMapper is to make object mapping easy, by automatically determining how one object model maps to another, based on conventions, in the same way that a human would - while providing a simple, refactoring-safe API for handli

modelmapper.org

MapStruct - mapstruct.org/

 

MapStruct – Java bean mappings, the easy way!

Java bean mappings, the easy way! Get started Download

mapstruct.org

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기