inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

MemberContorller클래스 create함수 질문

264

엔조이코딩

작성한 질문수 7

0

안녕하세요,

@PostMapping("members/new")
public String create(MemberForm from) {
Member member = new Member();
member.setName(from.getName());

memberService.join(member);

return "redirect:/";
}

웹 브라우저에서 넘어오는 것이 여기서 name뿐이니까

굳이 MemberForm이라는 클래스를 만들지 않고, 기존에 만들었던 Member의 name으로 입력받은 name을 바로 받는 방식도 가능한가요? (아래 코드처럼)

@PostMapping("members/new")
public String create(Member member) {
memberService.join(member);

return "redirect:/";
}

가능하다면, MemberForm이라는 클래스를 만들어준 이유가 무엇인가요?

java MVC spring spring-boot

답변 2

1

엔조이코딩

잘 이해했습니다! 감사합니다 :)

1

김영한

안녕하세요. dlgpfl2523님 좋은 질문입니다.

질문하신 것 처럼 Member로 변경해도 됩니다.

그런데 실무에서는 이렇게 딱 맞아 떨어지는 경우가 매우 드뭅니다.

예를들어서 회원가입시 회원과 무관한 약관 정보를 비롯한 기타 정보들이 추가로 들어오게 됩니다.

그런데 Member로 바로 받게 되면 Member에 회원과 무관한 데이터를 추가로 받아야 하는데, 이렇게 되면 좋지 않은 설계가 됩니다.

그래서 중간에서 완충 작용을 할 수 있는 Form이라는 것을 주로 사용합니다.

정리하면 지금처럼 단순한 경우에는 직접 사용하셔도 무방합니다. 다만 Member라는 것은 상당히 여러곳에서 사용하기 때문에 여기에 Member와 관련 없는 내용이 추가되면 안됩니다.

감사합니다.

..

0

74

2

Unused property.....

0

98

2

project JDK is misconfigured

0

130

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

82

2

단위/통합 테스트 버전충돌 문제

0

91

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

228

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

102

2

윈도우 build test오류 질문

1

102

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

98

2

테스트 실행 시 에러 질문

0

290

1

name을 통한 비교와 객체를 통한 비교

0

77

1

빌드 후 libs 없음

1

128

1

윈도우 gradlew.bat 에러

0

167

1

@PostMapping("/members/new")가 동작하지 않습니다

0

88

1

java static class와 kotlin class

0

77

1

스프링 DB연결

0

126

1

소요 시간

0

85

2

ddl.sql에 빨간 밑줄

1

101

2

welcome page 에러

0

180

3

잘 모르겠습니다.

0

163

2

fail을 똑같이 쳤는데 오류가 발생해요

0

156

2

index.html Welcome page

0

121

1

프로젝트 gradle-groovy ?

0

364

1

테스트코드 메서드명 한글

0

200

2