장점 : Entity 객체를 Controller, Repository까지 직접 전달해서 중간에 Entity를 만드는 과정이 없어 간단하다.
단점 : 각기 다른 상황마다 Entity를 사용하게 되면 검증하기 어렵고 groups를 사용해야 할 경우가 생긴다.
장점 : 전송하는 폼 데이터가 복잡해도 Dto를 사용해서 데이터를 전달 받을 수 있디. 검증 또한 중복되지 않아 용이하다.
단점 : Entity로 변환해주는 과정이 필요하다.
@Getter
public class ItemSaveForm {
@NotBlank
private String itemName;
@NotNull
@Range(min = 1000, max = 1000000)
private Integer price;
@NotNull
@Max(9999)
private Integer quantity;
}
@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편 : 백엔드 웹 활용 기술