[Java] DTO vs VO

Coodori·2023년 3월 14일
0

Comgram

목록 보기
1/3

DTO와 VO 차이점

DTO

  • 계층간 데이터 전달이 목적이다.
  • 필드 값이 같아도 같은 객체가 아니다.
  • setter 존재시 가변 , 없으면 불가변
  • 로직은 getter/setter 외의 로직은 필요없다.

VO

  • 값 자체를 표현한다.
  • 필드값이 같으면 같은 객체이다.
  • 불변하다.
  • getter/setter 외의 로직이 있어도 무방하다.

보통 혼용하여 사용하는 경우도 있고 위의 규칙에 따라 나누어서 사용하는 경우도 있다.
하지만 엔티티를 외부에 노출하지 말고 안에서 작동하는 로직은 DTO를 통해서 전달하자!
(노출하지 않아야할 불필요한 값도 노출하기 때문!)
또한 RestController에서 무한 참조를 일으킬 수 있기 때문에 안전한 DTO를 사용하자.

VO는 전달하는 것 이외에 유틸 메소드를 추가로 적어도 된다는점!

profile
https://coodori.notion.site/0b6587977c104158be520995523b7640

0개의 댓글