DTO와 VO 혼용하지 말자

📌 DTO vs VO

DTO

public class UserDto { private final String name; private final int age; public UserDto(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
Java
'레이어 간' 데이터를 전달하기 위한 객체
오직 getter나 setter 메서드 만을 가지고, 다른 로직은 가지지 않는다.
setter를 없애고, 불변으로 만들 수 있다.
요청이나 응답 값을 전달하기 위해 Entity Class 말고, DTO를 사용하자.

VO

public class Money { private final int value; public Money(int value) { this.value = value; } public int getHalfValue() { return value / 2; } //equals(), hashcode() 속성값으로 재정의하자 }
Java
값을 표현하는 용도 사용하자.
불변하다는 것을 보장해야 한다.
HashSet, HashMap, Hashtable 등 객체를 구분하기 위해 먼저 hashcode를 비교한다. 따라서 값으로 객체가 같음을 보장하기 위해서는 eqauls()와 hashcode()는 재정의하자.
DTO와 달리 다른 로직을 가질 수 있다.

📌 참고 자료

TOP