Spring - Validation - Form 객체 분리

현시기얌·2021년 7월 21일
0

Validation

목록 보기
8/8

1. 폼 데이터 전달에 Entity 사용

Form -> Entity -> Controller -> Item -> Repository

장점 : Entity 객체를 Controller, Repository까지 직접 전달해서 중간에 Entity를 만드는 과정이 없어 간단하다.
단점 : 각기 다른 상황마다 Entity를 사용하게 되면 검증하기 어렵고 groups를 사용해야 할 경우가 생긴다.

2. 폼 데이터 전달에 Dto 사용

Form -> Dto -> Controller -> Entity -> Repository

장점 : 전송하는 폼 데이터가 복잡해도 Dto를 사용해서 데이터를 전달 받을 수 있디. 검증 또한 중복되지 않아 용이하다.
단점 : Entity로 변환해주는 과정이 필요하다.

등록 시 Dto

@Getter
public class ItemSaveForm {

    @NotBlank
    private String itemName;

    @NotNull
    @Range(min = 1000, max = 1000000)
    private Integer price;

    @NotNull
    @Max(9999)
    private Integer quantity;
}

수정 시 Dto

@Getter
public class ItemUpdateForm {

    @NotNull
    private Long id;

    @NotBlank
    private String itemName;

    @NotNull
    @Range(min = 1000, max = 1000000)
    private Integer price;

    private Integer quantity;
}

이렇게 Controller단에서 들어온 Dto를 Repository로 보내기 위해서는 다음과 같이 Entity로 변경해줘야 한다.

    Item item = Item.of(form.getItemName(), form.getPrice(), form.getPrice());

참고 : 스프링 MVC 2편 : 백엔드 웹 활용 기술

profile
현시깁니다

0개의 댓글

관련 채용 정보