팀 프로젝트를 진행하며 DTO와 Entity 변환을 어떻게 구현했는지 서로 공유하였다.
어떤 분은 fromEntity, toEntity라는 함수를, 또 어떤 분은 ofEntity라는 함수를 정의하여 사용하셨다고 하였다.
서로 맞추려다 보니 더 정확히 알아야겠다는 생각이 들어 찾아보았다.
DTO, Entity를 변환하는 3가지 방법
1. 생성자 혹은 빌더를 통해 변환하는 방법
2. toXXX, fromXXX 메소드를 통해 변환하는 방법
3. 별도 DTO, Entity Mapper를 통해 변환하는 방법
첫번째 방법인 생성자나 빌더를 통해 변환하는 방법은 약간의 문제가 생길 수도 있다고 한다.
가독성이 떨어지고, 레이어에서 휴먼 에러로 필드 매핑 실수가 일어나지 않도록 신경써야 하기 때문이다.
Mapper는 DTO, Entity간 상호 의존성도 제거하는 좋은 방법이나, 프로그램 규모가 작을 경우에는 오버프로그래밍일 수 있다고 한다.
toXXX, fromXXX 구현
클린 아키텍처 기준 DTO 안에 toEntity, fromEntity를 다 만들어야 한다.
의존성을 한 방향으로 하기 위함이다.
별개 파일에서 toEntity, toDto를 구현할 경우 Entity도 Dto를 의존하고 Dto도 Entity를 의존하는 순환 사이클이 생기게 된다.
- 클린 아키텍처
의존성을 한 방향으로 하고, 순환 참조 방지를 위해 DTO에 toEntity와 fromEntity를 구현하면 된다.
그럼 ofEntity는 무엇일까?
ofEntity는 Entity에서 DTO로 변환하는 역할을 한다.
주로 Entity를 조회한 결과를 클라이언트로 전송할 때나, DTO로 변환하여 컨트롤러에서 전달할 사용한다.
기능을 정리해보니 ofEntity와 fromEntity가 같은 역할이라는 생각이 들었다.
chatgpt한테 물어보니 둘의 명명규칙은 팀마다 다를 수 있지만 기본적으로 기능은 동일하다고 한다.
[Spring] DTO는 어디서, 어떻게 변환해야 할까?
0. 🧐 고민의 시작 Spring의 DTO 개념을 처음 접하면서 고민이 생겼다. > 1. DTO, Entity 간의 변환은 어떻게 해야할까? > 2. DTO, Entity 간의 변환은 어느 레이어에서 해야할까? 어떻게 변환해야 하는지에
velog.io
[SpringBoot] 빌더 패턴의 “toEntity”와 “of” 메서드
DTO (Data Transfer Object) 클래스에서의 toEntity메서드와 of메서드가 무엇일까? 우선 이 메서드들을 사용하는 이유를 알아보자면 entity 클래스와의 상호변환을 쉽게 하기 위함이다. 1. DTO와 entity 간의 변
dahlia15.tistory.com
'Spring > Spring Study' 카테고리의 다른 글
[Spring] UUID, PK로 사용하면 어떨까? (0) | 2024.07.13 |
---|---|
[HTTP] GET 메소드 사용 시 Body가 있으면 안 되는 이유?! (0) | 2024.07.13 |
[Spring] 연관 매핑을 지양하라? (0) | 2024.07.04 |
[Spring] @Data는 왜 지양해야 하는 것일까? (0) | 2024.07.04 |
[Spring] HTTP 메소드 : PUT과 PATCH의 차이 (0) | 2024.07.04 |