작성
·
193
0
안녕하세요! 강사님. 추천하신대로 야생형으로 강의를 일단 진행을 하던 와중에 강의에서 설명하신거에 대한 해결책을 혼자서 하다가 질문이 있어서 남김니다.
웹 계층 개발 - 회원 목록 조회에서
MemberController.java
@GetMapping("")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members",members);
return "members/memberList";
}
이 메서드에서 강사님이 PostMapping에서 MemberForm으로 등록을 했지만 뿌려줄때는 Get으로 할 때 Member 객체로 List를 작성하는 것은 실무에는 없는 일이다. 라고 말씀해주셔서 한번 고쳐보려고했는데 Service와 Repository에서 MemberForm List로 리턴 해주는 메서드를 만들었습니다.
MemberController.java
@GetMapping("")
public String list(Model model) {
List<MemberForm> members = memberService.findAllMembers();
model.addAttribute("members",members);
return "members/memberList";
}
MemberRepository.java
public List<MemberForm> memberFindAll() {
return em.createQuery("select m from Member m", MemberForm.class)
.getResultList();
}
MemberService.java
public List<MemberForm> findAllMembers() {
return memberRepository.memberFindAll();
}
하지만 MemberRepository의 memberFindAll메서드에서 createQuery에 Member를 MemberForm으로 바꿔야하나요? 그러면 MemberForm은 @Entity의 애너테이션을 달았을 때 에러가 날텐데... 어떻게해야 MemberForm으로 List를 만들지 조언부탁드려도 될까요..ㅠㅠㅠ
답변 2
1
뿌려줄때는 Get으로 할 때 Member 객체로 List를 작성하는 것은 실무에는 없는 일이다. 이 부분이 제가 잘못이야기를 했던거 같아요 ㅠㅠㅠ 엔티티를 넘기지 않고 MemberForm.java를 보통 넘긴다(?) 이런 말씀을 하셨어요! 제가 글을 잘 못써서 잘못 와전이 된거같아요.
넵! 일단 말씀하신 조언으로 해보고 활용2편에서 보고 다시 해보겠습니다.! 감사합니다.🙌🏻
0
안녕하세요. epfvkdlxj1님
Q: 뿌려줄때는 Get으로 할 때 Member 객체로 List를 작성하는 것은 실무에는 없는 일이다. -> 이 부분이 정확히 어디에서 나온 이야기일까요? 제 생각에 의도가 잘 전달되지 않은 것 같아요. 만약 이 내용이라면 아마도 뷰 템플릿을 통해서 HTML을 제공하는 지금 같은 상황이 아니라, API를 제공할 때를 말하는 것 같습니다.
지금처럼 뷰 템플릿을 통해서 서버 내부에서 HTML을 렌더링 하는 경우에는 외부에 엔티티가 노출되는게 아니기 때문에 엔티티를 직접 사용하셔도 됩니다.
추가로 MemberForm으로 List를 변환하는 부분은 단순하게 컨트롤러에서 Member 리스트를 조회한 다음에, MemberForm으로 컬렉션을 돌리면서 변경하시면 됩니다. 이렇게 엔티티를 특정 객체로 변환하는 내용은 활용2편에서 자세히 설명드립니다.
감사합니다.