작성
·
231
0
답변 1
0
안녕하세요, maui2005 님. 공식 서포터즈 codesweaver 입니다.
.
1번) 사용자가 폼을 입력한 후 submit 하면, 스프링이 호출된 컨트롤러의 매개변수를 먼저 살펴봅니다. 그리고 객체를 인수로 받을경우, 이 객체의 필드변수명과 폼 이름이 일치하는 것들을 매핑한 뒤 다음 컨트롤러에 전달해 줍니다. 즉, 스프링 컨테이너가 데이터를 채워준 객체입니다.
2번) 엔티티를 DTO처럼 쓰는것은 좋지는 않습니다. HTML 폼과 엔티티가 정확히 일치 하지 않을수도 있으며, 이런 불일치를 해결하기 위해 엔티티에 쓸데없는 필드를 추가하게 될 우려가 있습니다. 이는 일반적으로도 좋지 않은 결과이며 후에 JPA 연결까지 고려한다면 더더욱 나쁜 결과입니다. (물론 DB와 애핑하지 않을 필드라고 명시할 수는 있지만, 추천하지 않습니다)
3번) create는 메서드 이름입니다. 메서드 이름은 임의로 지으셔도 상관은 없습니다. 다만 기능과 부합하는 이름이기만 하면 됩니다. (가령 회원을 생성하는 메서드 이름이 addMember() 라면 이상합니다. add는 무언갈 생성한다기 보다는 List나 Map, 배열등에 새로운 요소를 넣는것처럼 보이기 때문입니다)
4번) GetMapping, PostMapping, RequestMapping 등은 소괄호 안에 여러개의 옵션을 제공할 수 있습니다. url 정보 단 하나만 있을떄는 value= 를 생략할 수 있으나, url 정보 외에 별도의 옵션을 주려면 반드시 value=Xxx, anotherOption=Xxx 형태로 명시해야 합니다.
5번) 서비스는 로직에 대한 처리라고 보시면 되며, 리포지터리는 DB에 대한 처리를 전담한다고 생각하시면 됩니다. 컨트롤러에서 전달받은 데이터 등을 서비스에서 가공하며 이 가공된 데이터를 리포지터리를 이용해 DB에 입력하는 등의 행위를 합니다. 이런 논리상의 분리는 현대는 거의 의무적으로 따르고 있습니다.경우에 따라서는 컨트롤러에서 서비스를 거치지 않고 리포지터리를 바로 호출하기도 합니다.
.
감사합니다.