엔티티로 바로 받는게아니라 DTO로 받는 예
@PostMapping("/api/v2/members")
public createMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){
//@RequestBody @Valid CreateMemberRequest request 데이터를 DTO형태로 받는다.
Member member = new member();
member.setName(request.getName());
//DTO에서 받은 값을 엔티티에 넣어준다.
Long id = memberService.join(member);
return new createMemberResponse(id);
//엔티티를 전달하여 값을 등록
}
@Data
public class CreateMemberRequest{
private String name;
}
@Data
public class createMemberResponse{
private Long id;
public createMemberResponse(Long id){
this.id = id;
}
}
조금 번잡하지만 API스펙이 변하지도 않고 훨씬 좋다.
DTO명이 바뀌어도 영향이 적다.
*DTO에도 Valid @NotEmpty 같은걸 넣어줄 수 있다.
*엔티티를 절대 직접 노출시키지 않는다.
'JPA' 카테고리의 다른 글
2월 22일 JPA 회원조회 API (0) | 2023.02.22 |
---|---|
2월 22일 JPA 회원수정 API(Rest 스타일) (0) | 2023.02.22 |
2월 21일 JPA API개발 기본 v1 (0) | 2023.02.21 |
2월 20일 JPA JPQL- 벌크연산 (0) | 2023.02.20 |
2월 20일 JPQL - named쿼리 (정적쿼리) (0) | 2023.02.20 |