본문 바로가기

새롭게 쌓은 지식

DTO->Entity 변환메서드의 위치는 어디가 좋을까?

 

중고거래 플랫폼 API 서버 토이 프로젝트 도중 

PostRequest 라는 DTO 에서 title, content, category 세 값을 받아 Post 엔티티로 변환하려

toEntity 메서드를 작성 중 이었다.

 

하지만 이 메서드의 위치는 어디가 좋을지 결정하지 못했다.

 

 

 

PostRequest
Post 엔티티

PostRequest 를 통해 Post entity 를 생성하기 위해서 Member가 필수적이다. 참고로 Member엔티티의 필드에 Address, Location이 존재한다. 

 

 

 

내가 생각한 방법은 두 가지이다.

 

 

1. DTO에 따로 field를 만들어 Member 를 같이 받는다. ( 컨트롤러에서 처리하는 방법 )

2. toEntity 메서드를 호출할 때 Member 를 파라미터로 받아 처리한다. ( 서비스에서 처리하는 방법 )

 

 

컨트롤러에서 처리

 

클라이언트가 요청을 보낼 때 Member field를 사용하지 않아 리소스가 낭비된다.

 

하지만 컨트롤러에서 Member를 설정해주고, 서비스로 넘겨주기 때문에 서비스에서는 toEntity 메서드를 호출하여 저장하는 과정만 필요하기에 서비스의 코드 양을 줄일 수 있다는 장점도 있다.

 

 

 

 

 

서비스에서 처리

 

 

이렇게 Post 엔티티에 toEntity 메서드를 추가 했다. 개인적으로 DTO는 서비스계층에 침범하면 좋지 않다고 생각한다. 물론 경우에 따라 데이터베이스 접근 계층 까지 DTO를 끌고 가는 경우도 있으나 최대한 컨트롤러단에서 Entity로 변환하여 서비스계층에는 순수한 비지니스 로직만 위치하게 하는게 좋다고 생각한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

꾸준히 다시보자.

 

1. 221008

2. 221014

3. 221103

Recent Posts
Popular Posts
Recent Comments