Spring DTO(Data Transfer Object)

uudean·2023년 6월 12일
0

Spring

목록 보기
6/13

DTO란?

  • DTO는 Data Transfer Object의 약자로 데이터 전송을 위한 객체를 나타낸다.
  • 주로 서로 다른 시스템간에 데이터를 교환하거나 여러 계층간의 데이터를 전달하는데 사용된다.

DTO를 사용하는 이유?

  • 필요한 데이터만 응답으로
    Entity 전체를 클라이언트의 응답으로 넘길경우 불필요한 데이터가 포함될 수 있으며 민감한 데이터가 노출되는 것을 막을 수 있다.

  • 유효성 검증 코드를 Entity클래스에서 분리
    Entity클래스에는 모델링을 위한 다양한 어노테이션이 사용되므로 유효성 검증 코드가 같이 들어가게 된다면 복잡해진다. 이를 DTO클래스에 작성함으로써 Entity클래스를 간결하게 작성할 수 있다.

예시

DTO 클래스 적용 전

@RestController
@RequestMapping("/v1/members")
public class MemberController {
    @PostMapping
    public ResponseEntity postMember(@RequestParam("email") String email,
                                     @RequestParam("name") String name,
                                     @RequestParam("phone") String phone) {
        Map<String, String> map = new HashMap<>();
        map.put("email", email);
        map.put("name", name);
        map.put("phone", phone);

        return new ResponseEntity<Map>(map, HttpStatus.CREATED);
    }

적용 후

@RestController
@RequestMapping("/v1/members")
public class MemberController {
    @PostMapping
    public ResponseEntity postMember(MemberPostDto memberPostDto) {
        return new ResponseEntity<MemberDto>(memberDto, HttpStatus.CREATED);
    }

DTO클래스 예시

@Getter
public class MemberPostDto {
	@NotBlank
    @Email
    private String email;
    
    @NotBlank
    private String name;
    
    @NotBlank
    private String phone;
}

0개의 댓글

관련 채용 정보