[생각정리] DTO는 어디에서 변환되어야 할까?

jeyong·2024년 2월 27일
0

공부 / 생각 정리  

목록 보기
28/120
post-custom-banner


이번 주제는 DTO가 어디에서 변환되어야 적절한지에 관한 생각 정리이다. 정답이 없는 주제이지만, 생각을 정리하며 고민을 해결할 수 있다는 장점 때문에 논의를 진행하겠다. 마치 아이패드병처럼, 해결책을 찾으려는 노력이 필요한 상태이다.

1. 게시글 추천

아래 게시글을 읽고 오는 것을 추천한다

DTO의 사용 범위에 대하여

원래는 블로그에 DTO의 변환에 대해서 케이스 별로 구분하여 정리하려고 하였으나, 이미 잘 정리된 글이 있어 해당 게시글을 추천하고 넘어가겠다. 역시 세상은 넓고 뛰어난 개발자는 많다.

2. 생각정리

일단 현재 2024년 2월기준으로 나의 경험에 기반한 생각은 DTO-Entity 간의 변환 위치는 Service 레이어가 맞다고 생각한다. 이유는 아래와 같다.

  • Controller가 변환을 처리하고 엔티티만을 넘겨줄 경우, Service도 의존하고, Dto도 의존하고, Entity도 의존하게 된다.
  • Service에서만 엔티티를 다룰 경우, 트랜잭션을 이용한 엔티티의 지연 로딩을 가능한 범위에서 안전하게 사용할 수 있다.

그러나 공부하면서 명확하게 정하기보다는 상황에 유연하게 대응하는 것이 중요하다고 생각하게 됐다. 생각 정리에 특히 도움을 받은 주소들은 다음과 같다.

해당 글에서 김영한 선생님의 생각은 "컨트롤러 계층만 도메인 모델을 모른다고 해서 큰 이득을 얻지는 못한다"이다. 결국 프로젝트를 진행하면서 상황에 맞게 판단하여 적용하는 것이 적절한 것 같다. 이를 판단하는 것이 개발자의 역량이라고 생각한다. 이번 논의는 김영한 선생님의 말을 인용하며 마무리하겠다.

" 저도 과거에는 항상 정답이 있을 것이라고 생각했는데, 시간이 지날수록 그리고 더 많이 경험할 수 록 딱 정답이 있다기 보다는 결국 객체지향의 기본 원칙과 응집도 결합도 같은 기본적인 개념들이 더 중요하다는 것을 느끼고, 이것을 메서드이든, 클래스이든, 모듈이든, 마이크로서비스이든 기본 원칙을 가지고 고민하는게 중요하다고 생각하게 되었습니다."

profile
노를 젓다 보면 언젠가는 물이 들어오겠지.
post-custom-banner

0개의 댓글