인프런 커뮤니티 질문&답변

정민님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 등록

MemberForm? Dto?

해결된 질문

21.06.28 16:51 작성

·

611

1

강의에서 구현한 MemberForm이 Dto와 같은 개념인가요? 

MemberForm을 사용하신 이유에 대해 설명하신것을 들어보면 Dto와 같은 것 같은데 만약 같은것이면 왜 Dto라 명명하지 않으신건지, 혹은 Dto와 다른 개념이면 어떤 점이 다른것인지 궁금합니다.

답변 2

10

OMG님의 프로필 이미지

2021. 06. 28. 23:44

안녕하세요. 정민님, 공식 서포터즈 OMG입니다.

답변 드리기에 앞서 DTO의 정의에 대해 짚고 넘어가겠습니다. 아래의 링크를 참고했는데요,

우리가 setter를 요청하는 것 이 아닌, 프레임워크단(우리눈에 안보이는)에서 setter가 실행된다는 점이다. 그로 인하여, Layer간(쉽게 한가지 예를 들자면, 서버 코딩 -> view 코딩)에 데이터를 넘길때는 DTO를 쓰면 편하다는 것이다.  데이터가 자동적으로 클래스화가 된다는 것이다. 한가지 더 예를 들자면,

form 에서 name 필드 값을 프로퍼티에 맞춰서 값을 다른 페이지로 넘겼을 시 , 값을 받아야할 페이지에서는 값을 하나씩 일일이 받는 것이 아니라 name속성의 이름이랑 매칭되는 프로퍼티에 자동적으로 DTO가 인스턴스화 되어 PersonDTO를 자료형으로 값을 받을 수 있다는 것이다.

출처: https://mommoo.tistory.com/61 [개발자로 홀로 서기]

Form 객체를 DTO로 봐도 무방해 보이죠 ? 이 글 뿐만 아니라 다른 글들을 참고하더라도 Form객체를 DTO로 보지 못할 이유는 없는것 같더라구요.

그럼 다음으로 넘어가서,

왜 Dto라 명명하지 않으신건지, 혹은 Dto와 다른 개념이면 어떤 점이 다른것인지 

우리가 API를 만든다고 가정해볼게요, 게시글 저장 요청 관련DTO를 만든다고 하면 클래스 명을 어떻게 만들까요? PostSaveRequestDto로 만들겠죠? PostSaveRequestForm으로 만들지는 않는게 명확합니다.

반면 화면단에서 가령, SignupForm(회원가입), PasswordForm(비밀번호 수정), EventForm(이벤트 등록) 등 어떤 폼에서 사용하는지를(폼에서 쓰는군!) 명확하게 나타낼 수 있어서 이름을 xxxxForm으로 짓는게 아닌가 생각합니다.

,

설명이 이해가 안가거나 틀렸다고 생각하는 부분이 있다면 댓글 남겨주세요

감사합니다.

정민님의 프로필 이미지
정민
질문자

2021. 06. 29. 01:35

우선 궁금해서 질문을 남겨 보고 저 혼자 추가로 검색해서 알아보았습니다.

https://www.inflearn.com/questions/137265

김영한님께서 동일한 질문에 답을 달아주신 글이 존재하네요;;; 죄송합니다. 이러한 중복을 막기 위한 질문 게시판인데...

여튼 멘토님의 더 자세한 추가 설명 덕분에 궁금증이 명쾌하게 해결되었습니다. 

다음에는 좀더 검색해서 알아본 후에 질문드리도록 하겠습니다. 감사합니다!!!

OMG님의 프로필 이미지

2021. 06. 29. 02:15

영한님의 답변도 있었군요 ㅎㅎ

제 답변과 일맥상통하는 부분이 있어서 다행입니다..ㅎㅎ;
모르는게 있으면 언제든 질문 남겨주세요~

4

OMG님의 프로필 이미지

2021. 06. 29. 00:32

참고로 더 말씀드리자면 Form객체와 같은것을 command 객체라고도 합니다.

정민님의 프로필 이미지

작성한 질문수

질문하기