ModelMapper란?

J_Eddy·2022년 6월 19일
0

프로젝트를 구현하다 보면 Entity, Dto를 나누어 사용했던 경험이 있을 것이다. 여러가지 상황이 있지만 JPA를 사용할 때 예를 들어보겠다.

Builder 사용 했을 때


위와 같이 JPA를 이용해서 TEST Entity클래스에 데이터를 가져왔고, builder 패턴을 이용해서 test -> TestResponse로 변환하는 작업을 한다. (이게 뭐 어때서?)🤔

틀리거나 잘못된 코드가 아니다. 더욱이 Entity로 리턴을 하지않고 Response로 변환해서 데이터를 넘기는 것부터 Entity와 Dto의 역할 구분을 명확히 하고 있다는 뜻이므로 절대 잘못되거나 틀린 코드가 아니다.

다만 저 Test라는 Entity가 가진 객체가 위 사진처럼 5개가 아닌, 10개.. 혹은 20.. 아니 수십개라고 가정해보자. 그러면 저 builder 부분의 코드 줄 또한 몇십줄이 될거고 손가락은 부서질거다..😵

ModelMapper 사용 했을 때

거두절미 하고 같은 코드에 ModelMapper를 사용하면 코드가 어떻게 되는지 바로 보면 아래와 같다.

위에 builder로 하나하나 객체를 매핑해주던 일을 안하고 저 코드 한줄로 해결이 된다.

ModelMapper 사용법

먼저 dependencies를 추가해준다.

dependencies {
   ...
 
	implementation 'org.modelmapper:modelmapper:2.3.2'
}

이후 컨테이너가 run할 때 인스턴스를 생성해주도록 Bean을 등록해준다.

이후 사용하고자 하는 로직에 아래와 같이 코드를 추가해준다.

        TestResponse response = modelMapper.map(test,TestResponse.class);

이 때 규칙이 하나 있다. 앞선 예시 기준으로 Entity와 Dto에 있는 객체들의 이름이 같아야 자동으로 매핑이된다. 물론 이름이 달라도 addMapping이라는 메소드를 통해 커스텀하게 매핑이 가능하지만 이번 포스티의 목표는 ModelMapper라는 것이 있구나 정도이기 때문에 작성은 하지 않겠다🙂

profile
논리적으로 사고하고 해결하는 것을 좋아하는 개발자입니다.

0개의 댓글