작성
·
327
·
수정됨
답변 1
1
안녕하세요, 권하나님! 질문 올려주셔서 감사드립니다~! 😊
아마 이런 의도로 질문을 주신 것 같아요!! "dto에 직접 저장을 했다"라는 것을 코드로 표현해 보면.. (약간 느낌만 살려보겠습니다 ㅎㅎㅎ)
private List<UserCreateRequest> users = new ArrayList();
public void saveNewUser(@RequestBody UserCreateRequest request) {
users.add(request); // 이렇게 UserCreateRequest를 추가할 수도 있음.
}
인 것 같고요!! User
라는 객체를 따로 만들어 저장했다라는 느낌은~ UserCreateRequest
를 바로 저장하는 대신 User
로 한 번 변환해 저장했다 라는 느낌 같습니다!
아마 강의를 쭉 들어주시면, 이 방식 자체가 "서버를 껐다가 키면 데이터가 휘발되는 방식"이고 동시에 "ORM을 사용하지 않는 방식"이라는 것을 알게 되실거에요. 즉, 현업에서는 쓸 일이 없는 방식이긴 한거죠~~
하지만, 단편적으로
UserCreateRequest
를 바로 저장하는 방법
User
를 바로 저장하는 방법
이 2가지만 비교해서 후자를 선택한 이유를 말씀드리자면, 도메인 객체(User
)와 DTO 객체 (UserCreateRequest
)를 구분하기 위해서 입니다!!
둘을 구분해 두면 추후에 변경사항이 생겼을 때 side effect를 최소화 한다거나, 유지보수가 쉬워지는 등 장점이 많기 때문이죠 🙂
비슷한 개념으로는 "MVC 패턴"이라는 것이 있습니다! 이 역시 역할에 맞게 객체를 구분하는 패턴인데요! UserCreateRequest
가 보여지는 데이터 이므로 View에 해당하고, User
가 도메인 객체이므로 Model에 해당한다고 보시면 됩니다.
답변이 도움이 되었으면 좋겠습니다.
또 궁금한 점 있으시면 편하게 질문 주세요~~ 🙏