[SpringBoot 구조] DTO 설명 및 정의 / 어노테이션

2023. 12. 31. 10:52SpringBoot+JPA

반응형

DTO  정의

클라이언트와 서버 간의 데이터 전송을 위해 사용되는 객체

데이터베이스에서 가져온 데이터나 서비스 간의 통신에 필요한 데이터를 담고 있는 객체

교환할 자료에 따라 여러 개로 구성해서 사용

필요한 데이터만을 포함하여 객체를 생성하므로, 불필요한 정보를 제외하고 필요한 정보만을 전송 가능

Entity와 1:1매칭할 필요 없음!

 

 

 

DTO  구조 및 작성 방법

데이터를 담는 필드

기본 생성자와 필요한 생성자, getter 및 setter 메서드를 포함

@Data
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProductDTO {

  private Integer productId;

  @NotEmpty(message = "상품 이름은 필수 입력입니다.")
  private String productName;

  @NotNull(message = "가격은 필수 입력입니다.")
  @Min(value = 0, message = "가격은 최소 0원 이상이어야 합니다.")
  private Integer productPrice;

  private CategoryTypeRole categoryTypeRole;

  private LocalDateTime reDate;

  private LocalDateTime moDate;

}

 

 

 

Controller에서 DTO 사용

클라이언트의 요청을 처리할 때, DTO를 사용하여 데이터를 주고받음

  //삽입 처리
  @PostMapping("/productinsert")
  public String insertProc (@Valid ProductDTO productDTO, BindingResult bindingResult, Model model) throws Exception {

    if(bindingResult.hasErrors()) {
      model.addAttribute("categoryTypeRole", CategoryTypeRole.values());
      return "/product/insert";
    } productService.insert(productDTO);

    return "redirect:/productlist";
  }
  //수정처리
  @PostMapping("/productupdate")
  public String updateProc (@Valid ProductDTO productDTO, BindingResult bindingResult, Model model) throws Exception {

    if(bindingResult.hasErrors()) {
      model.addAttribute("categoryTypeRole", CategoryTypeRole.values());
      return "/product/update";
    } productService.update(productDTO);

    return "redirect:/productlist";
  }

 

 

 

DTO 사용 어노테이션

@Data 클래스에 대한 자동 생성된 메서드

getter 및 setter 메서드, equals(), hashCode(), toString() 등을 포함한 표준 데이터 객체 메서드를 생성
@AllArgsConstructor 클래스의 모든 필드를 사용하여 생성자를 자동으로 생성
@NoArgsConstructor 매개변수 없는 기본 생성자를 자동으로 생성
@Builder 빌더 패턴을 구현하기 위한 메서드를 자동으로 생성

 

 

 

@Valid 어노테이션 속성

컨트롤에서 @Valid 어노테이션을 설정을 하면 해당 대상에 대해서 검증 처리

@NotNull(변수="오류메세지")

 

검증오류 관련 어노테이션

@Notnull 해당하는 필드의 값을 null을 허용하지 않는다.
@NotEmpty 해당하는 필드의 값을 null과 ""(길이 0)
@NotBlank 해당하는 필드의 값을 null과 "", " "(빈스페이스)을 허용하지 않는다.
@Min 해당필드의 최소값을 벗어났는지 검증
@Max 해당필드의 최대값을 벗어났는지 검증
@Email 해당필드가 이메일 형식인지 검증
@Size(min, max) 최소값과 최대값을 벗어났는지 검증

 

 

[Java] 유효성 검사 (Validation) / 검증 오류 DTO에 작성하는 방법

유효성 검사(Validation) 데이터의 일관성과 정확성을 보장 올바른 데이터인지 판별하는 것이 목적 @Validation 어노테이션으로 선언해서 사용 View에서 DTO로 값을 전달 (Controller) - 설정 DTO에서 값의 유

dalhyehye.tistory.com

 

반응형