본문 바로가기
IT 공부/공부하며 드는 의문들

Model Mapper Deep 매핑 방법??

by exdus3156 2024. 1. 23.

MVC 패턴에서 컨트롤러와 뷰, 모델 사이에는 DTO라는 데이터 박스를 사용해 데이터를 한꺼번에 전달한다. 

이는 컨트롤러와 서비스에서도 마찬가지인데, 이렇게 해야 웹 레이어와 서비스 내부(도메인과 레포지토리)를 개념적으로 분할할 수 있다. 

그러나 서비스 내부에서는 DTO를 도메인의 VO와 같은 객체로 변환을 해야 하며, 이를 위해 Model Mapper와 같은 라이브러리가 사용된다.

그런데 Model Mapper는 객체 내부에 객체가 있는 경우엔 그것을 매핑하지 않는 것으로 보인다. 예를 들어, ReplyDTO 객체에 bno가 있다. ReplyDTO를 Reply 객체로 변환하고 싶은데, Reply에는 Board 객체가 있고, Board 객체에 bno 필드가 있다. Model Mapper는 ReplyDTO의 bno를 Reply의 Board의 bno로 변환해주지 않는다.

억지로 변환하는 방법이 있긴 있다. 

공식 홈페이지를 보면 Deep Mapping이라고 해서 내부 객체의 매핑 방법을 사용할 수는 있다. 하지만 이렇게까지 복잡하게 처리하는 것이 달갑지 않을 뿐더러, 되도록이면 불면이어야 할 Entity 객체에 setter를 모두 설정해야 한다는 사실이 조금 부담스럽다. 그래서 지금 프로젝트에서는 그냥 일일이 매핑해주는 메소드를 만들어서 사용하고 있다.

그렇다면 실무에서는 어떻게 이걸 간편하게 변환하는 걸까?

 

 


[Model Mapper] - DTO와 Entity 변환 시 내부에 객체를 매핑하고 싶을 때 (tistory.com)

 

[Model Mapper] - DTO와 Entity 변환 시 내부에 객체를 매핑하고 싶을 때

Model Mapper Deep 매핑 방법?? MVC 패턴에서 컨트롤러와 뷰, 모델 사이에는 DTO라는 데이터 박스를 사용해 데이터를 한꺼번에 전달한다. 이는 컨트롤러와 서비스에서도 마찬가지인데, 이렇게 해야 웹

linocraft.tistory.com

대략적으로 해결... 하지만 Model Mapper의 상세한 사항은 조금 더 공부해야 할 것 같다.