inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

7강. 유저 생성 API 개발

7강. 유저 생성 API 개발 질문있습니다.

403

Devel

작성한 질문수 4

0

안녕하세요

현재 7강. 유저 생성 API 개발 의 9분 듣고있습니다.

국비 프로젝트에서 dto에 직접 저장을 했던 경험이 있습니다.

선생님께서는 dto에 패키지의 UserCreateRequest에 저장하지 않고 domain패키지에 User라는 객체를 따로 만들어서 저장하시더라구요.

그렇게 하는 이유를 알려주실 수 있을까요?

java spring aws mysql spring-boot jpa

답변 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