VO, DTO, ENTITY

yshjft·2022년 4월 18일
0

VO, DTO, Entity의 차이점

  • Entity
    • 식별자인 ID를 가지고 있다.
    • Mutable
    • id만 같으면 동일한 값
  • VO
    • immutable
    • 모든 attribute가 같아야 동일한 값

왜 Entity가 아닌 DTO를 사용할까?

1. 엔티티 내부 구현을 캡슐화할 수 있다.
엔티티는 실제 DB의 테이블과 매칭되는 클래스로서 도메인의 핵심 로직과 속성을 가지고 있다. 만약 DTO 대신 엔티티를 UI 계층에 노출하게 되면 테이블 설계가 공개되어 보안상으로 문제가 될 수 있다. 따라서 엔티티의 내부 구현을 캡슐화하고 UI계층에 노출시키지 않기 위해서 DTO를 사용해야 한다.

2. 화면에 필요한 데이터를 선별할 수 있다.

3. validation 코드와 모델링 코드를 분리할 수 있다.
엔티티 클래스는 DB의 테이블과 매칭되는 필드가 속성으로 선언되어 있고, 복잡한 비즈니스 로직이 작성되어있는 곳이다. @NotNull@NotEmpty@NotBlank 등과 같은 요청에 대한 값의 validation코드가 들어간다면 엔티티 클래스는 더 복잡해지고 그만큼 가독성이 저하된다.

4. DTO를 사용하지 않을 경우 엔티티의 변경에 의해 API 스펙이 변경될 수 있다.

profile
꾸준히 나아가자 🐢

0개의 댓글