Entity to DTO, DTO to Entity 그리고 ModelMapper
DTO에 관한 생각
DTO는 목적마다 여러개 생성해서 사용하는건가요? - 인프런 | 질문 & 답변
dto - 인프런 | 질문 & 답변
✅ DTO를 사용해야만 하는 이유
- View에게 필요한 정보만 반환하기 위해
- Entity의 노출을 최소화하기 위해
- 어떤 값을 요청하고 어떤 값을 응답하는지에 대한 설계서 역할
- API에 반환하는 값 중에 “Null” 값이 있으면 안 된다.
- 순환참조 문제(RestAPI 제작 시 JSON 직렬화 오류)
- 양방향 관계에 있는 객체를 JSON으로 직렬화하려고 할 때, 계속 내부적으로 가지고 있는 객체들을 직렬화하려고 하는 순환참조 문제가 계속 발생함
- ‣
❓고민 사항
-
어디서부터 어디까지 DTO를 사용할 것인가?
☝️ Service 계층 내에서 Entity ↔ DTO 간에 데이터 변환이 이루어져야 함
✌️ Service 계층이 DTO 클래스에 대해서 알게된다는 것이 의존적이라는 생각도 있다
-
Entity ↔ DTO 변환은 어떻게 할 것인가?
➡️ 특정 메소드를 통해서 변환하는 것이 좋아보임
- Entity → DTO = ofEntity()
- DTO → Entity = fromEntity()
-
어떻게 만들 것인가?
- 내부의 static 클래스로 만든다
- 여러 클래스를 생성한다
📝 Entity에 toDTO() 메소드가 있는게 적합한가?
Entity에 toDTO() 메소드를 계속해서 작성 중인데, DTO가 변할수록 Entity로 수정해야하는 번거로움, 결국 Entity가 DTO에 종속적인 상황이 되어버렸다.