작성
·
175
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이라는 클래스를 만들어준 이유가 무엇인가요?
답변 2
1
1
안녕하세요. dlgpfl2523님 좋은 질문입니다.
질문하신 것 처럼 Member로 변경해도 됩니다.
그런데 실무에서는 이렇게 딱 맞아 떨어지는 경우가 매우 드뭅니다.
예를들어서 회원가입시 회원과 무관한 약관 정보를 비롯한 기타 정보들이 추가로 들어오게 됩니다.
그런데 Member로 바로 받게 되면 Member에 회원과 무관한 데이터를 추가로 받아야 하는데, 이렇게 되면 좋지 않은 설계가 됩니다.
그래서 중간에서 완충 작용을 할 수 있는 Form이라는 것을 주로 사용합니다.
정리하면 지금처럼 단순한 경우에는 직접 사용하셔도 무방합니다. 다만 Member라는 것은 상당히 여러곳에서 사용하기 때문에 여기에 Member와 관련 없는 내용이 추가되면 안됩니다.
감사합니다.