7강. 유저 생성 API 개발 질문있습니다.
403
작성한 질문수 4
안녕하세요
현재 7강. 유저 생성 API 개발 의 9분 듣고있습니다.
국비 프로젝트에서 dto에 직접 저장을 했던 경험이 있습니다.
선생님께서는 dto에 패키지의 UserCreateRequest에 저장하지 않고 domain패키지에 User라는 객체를 따로 만들어서 저장하시더라구요.
그렇게 하는 이유를 알려주실 수 있을까요?
답변 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에 해당한다고 보시면 됩니다.
답변이 도움이 되었으면 좋겠습니다.
또 궁금한 점 있으시면 편하게 질문 주세요~~ 🙏
패키지 구분에 대해 궁금한게 있습니다
0
19
2
리액트 관련 질문이 있습니다.
0
63
2
스프링부트 버전
0
72
2
7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.
0
58
2
33강. UserLoanHistory의 관계성에 대한 질문
1
55
2
Java JDK 버전 문의의 건
0
132
2
ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.
0
87
3
h2 console 접속했을 테이블 질문
1
64
1
ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨
0
74
2
15강. updateUser() 질문
0
55
2
깃허브 질
0
81
2
여기까지 다 끝냈다고 하셨는데
0
78
2
왜안될까요
0
69
2
MySQL 창이안ㄴ뜹니다
0
58
2
포스트맨
0
49
1
spring 개념적인 질문
0
71
2
인텔리제이 샘플코드 실행 안됨 오류
0
140
2
aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다
0
83
1
마이그레이션 오류입니다.
0
171
3
Whitelabel Error Page 오류가 났습니다.
0
163
2
안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ
1
91
3
궁금한게 있습니다.
0
59
2
DTO 관련
0
70
2
궁금한게 있습니다!
0
67
2





