티스토리 뷰
반응형
페이지에 설명된 소스코드는 링크에 있습니다.
마지막으로 API에 있어서 조회를 구현해보자.
조회의 경우에 맨처음 말했던 저장처럼 DTO를 통해서 API를 구현하는 것이 좋다.
우선 그렇게 하지 않은 소스 코드의 경우에는
@GetMapping("/api/v1/members")
public List<Member> membersV1(){
return memberService.findMembers();
}
다음과 같이 할 수 있지만, entity - api간의 양방향 의존관계가 생겨버리기 때문에 운영에 있어서 매우 불안정하다.
또한, 다음처럼 보내게 되면 array의 형태로 넘어가기 때문에 반환형태 또한 API spec에 맞지 않게 넘어가게 된다.
따라서 Result라는 객체로 한번 감싸주어 API 반환 형태의 spec을 맞춰주면 된다.
@GetMapping("/api/v2/members")
public Result MemberV2(){
List<Member> findMembers = memberService.findMembers();
List<MemberDto> collect = findMembers.stream()
.map(member -> new MemberDto(member.getName()))
.collect(Collectors.toList());
return new Result(collect);
}
@Data
@AllArgsConstructor
static class Result<T>{
private T data;
}
@Data
@AllArgsConstructor
static class MemberDto{
private String name;
}
또한, 다음처럼 하게 되면 MemberDto 같은 객체를 통해서 내가 보여주고 싶은 정보만 보여줄 수 있기때문에
더욱 유리한 점이 있다.
728x90
반응형
'Back End > JPA' 카테고리의 다른 글
[JPA 기초] 1. 영속성 컨텍스트 (0) | 2022.10.03 |
---|---|
[API] 5. 1:N 관계 조회 최적화 - 1 (0) | 2022.09.17 |
[API] 4. JPA 조회 성능 최적화(N+1문제와 fetch join) (0) | 2022.09.05 |
[API] 2. Spring Data JPA API - 수정 (0) | 2022.08.30 |
[API] 1. Spring Data JPA API - 저장 (0) | 2022.08.30 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- broker
- KAFKA
- rhel
- Firebase
- 프론트엔드
- docker
- consumer
- centos
- logback
- feign client
- Container
- cs
- API
- NextJS
- Front
- Java
- spring boot
- OS
- Linux
- Data Engineering
- K8S
- JPA
- zookeeper
- frontend
- React
- 리액트
- spring
- apache kafka
- apache
- Producer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
250x250