DTO
API 개발에서 응답, 요청 값 형식을 유연하게 지정하기 위해 별도로 정의
엔티티를 직접 응답, 요청에서 다루게 되면 엔티티 수정 시 모든 API 스펙이 바뀌게 되어 DTO를 사용
엔티티와는 달리 setter, constructor 를 자유롭게 사용해도 됨(응답, 요청 등에만 사용할 것이므로 변경지점을 관리하는 것이 큰 효용은 없음)
Controller 단에서 메서드의 return 타입으로 java.util.List 를 사용하지 말자.
만약 해당 리스트외에 추가적인 데이터가 필요할 시 API를 하나 더 추가하거나 해당 데이터와 리스트를 담은 DTO를 새로 만들어 반환해야한다.
반환하고자하는 DTO list 를 클래스의 필드로 만들어 반환하게 되면 API를 유연하게 사용할 수 있게 된다.