1. 회원 전체 조회 기능 구현

1. UserResponseDto 구현

회원 조회 시 entity를 반환하지 않고 dto를 반환하기 위해 response dto를 작성했다.

@Getter
public class UserResponseDto {
    private long id;
    private String user_id;
    private String user_password;
    private String user_name;

    public static UserResponseDto of(UserMinj userMinj) {
        UserResponseDto userResponseDto = new UserResponseDto();
        userResponseDto.id = userMinj.getId();
        userResponseDto.user_id = userMinj.getUser_id();
        userResponseDto.user_password = userMinj.getUser_password();
        userResponseDto.user_name = userMinj.getUser_name();
        return userResponseDto;
    }
}

ref

https://velog.io/@aidenshin/DTO에-관한-고찰

https://velog.io/@suhongkim98/요청과-응답으로-Entity-대신-DTO를-사용하자

2. Controller

@GetMapping()
public List<UserResponseDto> selectUser(){
    return userMinjService.selectUser();
}

회원 전체 목록을 조회하므로 get 메소드를 사용하였다.

그리고 반환형은 UserResponseDto의 리스트 형태이다.

3. Service - selectUser

단순히 entity를 찾는다면 findAll() 메소드를 사용하여 반환하면 되지만 entity가 아닌 dto로 매핑한다는 과정에서 막혔다.

우선 스프링을 제대로 공부하고 시작한 것이 아닌 무작정 개발해보자로 시작하여 기본적인 지식이 없다. 그래서 entity를 반환형으로 사용해도 되는지를 찾아보았다.

https://velog.io/@suhongkim98/요청과-응답으로-Entity-대신-DTO를-사용하자

우선 이 글을 읽게된 후 dto를 사용하자고 확답이 나왔다. entity를 반환값으로 사용할 경우 순환 참조가 일어나 무한 루프에 빠질 수 있다는 문제점이 있고, 근본적으론 반환값이 entity 전체를 알 필요가 없다.

그리고 of() 메소드는 왜 사용하느냐였다. 일단 실습하면서 of() 메소드를 자주 사용했다. 그래서 service에서 생성자에 값을 넣는 것보단 이게 더 편하고 먼가 멋져 보인다. 물론 of() 메소드에서 값을 집어 넣는 과정이 귀찮긴 하다.