[스프링 활용] 회원 목록 조회

atdawn·2024년 6월 19일

SPRING BOOT+JPA

목록 보기
30/49

참고 : 인프런 [ 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 김영한 ]


회원 컨트롤러

@GetMapping("/members")
    public String list(Model model){
        List<Member> members = memberService.findMembers();
        model.addAttribute("members", members);
        return "members/memberList";
    }

memberList.html

...
    <div>
        <table class="table table-striped">
            <thead>
            <tr>
                <th>#</th>
                <th>이름</th> <th>도시</th> <th>주소</th>
                <th>우편번호</th> </tr>
            </thead>
            <tbody>
            <tr th:each="member : ${members}">
                <td th:text="${member.id}"></td>
                <td th:text="${member.name}"></td>
                <td th:text="${member.address?.city}"></td>
                <td th:text="${member.address?.street}"></td>
                <td th:text="${member.address?.zipcode}"></td>
            </tr>
            </tbody>
        </table>
    </div>
...
  • th:each="member : ${members}"
    • ${members}는 members라는 List<Member>을 반복하면서 각 항목을 member 변수에 바인딩

    • members 컬렉션의 각 요소마다 태그를 생성


      💡 엔티티 직접 사용하기 vs 폼 객체 생성하여 사용하기

    • 요구사항이 단순할 때는 엔티티를 그대로 사용해도 된다.

    • 실무에서는 폼과 엔티티가 1:1로 매칭되는 경우가 거의 없음.

    • 엔티티를 직접 사용하게 되면 화면 기능 때문에 엔티티가 지저분해짐. : 유지 보수 어려움

    • 화면에 맞는 폼 객체나 DTO 를 사용하는 것을 권장

    • API를 만들 때는 절대 엔티티를 사용해서는 안됨!

      회원 목록 조회 기능의 경우 엔티티를 수정하지 않고 심플하게 화면에 출력할 수 있는 상황이기 때문에 엔티티를 직접 사용하였다.
      => 멤버 DTO나 화면에 맞는 transfer object로 변환하여 반환 하는 것이 가장 깔끔.



      
      회원 목록도 정상적으로 출력되는 것을 확인했다.

profile
복습 복습 복습

0개의 댓글