엔티티를 직접 응답값에 리턴할 경우
엔티티에 보여주기 용 불필요한 로직이 추가된다.
- 프레젠테이션 계층을 위한 로직이 추가된다.
- 응답 스펙을 맞추기 위한 로직이 추가된다.
- @JsonIgnore, 별도의 뷰 로직 등
실무에서는 용도에 따라서 같은 엔티티여도 여러 API에서 이용될 수 있다.
따라서 한 엔티티에 각 API를 위한 프레젠테이션 응답 로직을 전부 담기는 어렵다.
컬렉션을 직접 반환하면 항후 API 스펙을 변경하기 어렵다.
- 별도로 Result용 클래스 생성으로 해결한다.
상기와 같은 이유로 API 응답 스펙에 맞추어 별도의 DTO를 정의, 반환한다.
Result용 클래스 예시
// Result의 사용처
public Result Member() {
List<MemberDto> collect = memberService.findMembers().stream()
.map(m -> new MemberDto(m.getName()))
.collect(Collectors.toList());
return new Result(collect, 1, "yoon");
}
@Data
@AllArgsConstructor
static class Result<T> {
private T data;
// 확장 가능
private int count;
private String name;
}
'Spring > 이론' 카테고리의 다른 글
[AOP 기반] 프록시 팩토리, 포인트컷, 어드바이스, 어드바이저란? (0) | 2024.01.17 |
---|---|
프록시 형태 별 차이 (인터페이스 VS 클래스) (0) | 2024.01.04 |
[JPA] 준영속 엔티티란? 더티체킹이란? (0) | 2023.09.14 |
동적 쿼리 VS 정적 쿼리 차이, 예시 (0) | 2023.09.06 |
[JPA] JPQL fetch join 페치 조인 (0) | 2023.08.02 |