DTO : 데이터 전달용
VO : 값 표현용
DTO(Data Transfer Object) : 데이터를 전달하기 위해 사용하는 객체
DTO가 Setter 메서드를 가질 경우 데이터가 가변적으로 볼 수 있음
엔티티 클래스 : 요청이나 응답 값을 전달하는 클래스를 사용하면 안됨
뷰 : 비즈니스 요구사항에서 자주 변경되는 부분
DTO를 사용하지 않고 Entity를 사용한 경우
요청이나 응답 값을 전달하는 클래스로는 반드시 뷰에 변경에 따라 다른 클래스들에게 영향을 끼치지 않고 자유롭게 변경할 수 있는 DTO를 사용해야 함
VO(Value Object) : 값 그 자체만을 나타내고 값으로만 비교되는 객체
완전한 VO로 사용하기 위해서는 Equals()와 Hashcode() 메서드를 오버라이드 해줘야 함
DTO vs VO
DTO | VO | |
---|---|---|
용도 | 레이어 간 데이터 전달 | 값 자체 표현 |
동등 결정 | 속성값이 모두 같다고 해서 같은 객체가 아님 | 속성값이 모두 같으면 같은 객체 |
가변/불변 | setter 존재(가변)/ 존재 x : 불변 | 불변 |
로직 | getter/setter외 로직을 갖지 않는다 | getter/setter외 로직을 가질 수 있다. |