Backend/Java

[Java] VO와 DTO의 차이점

leecom116 2024. 7. 30. 09:07

VO(Value Object)

값 자체를 표현하는 객체

변조가능성 메서드 존재 X ex) Setter, DTO와 달리 별도 메서드 추가 가능

-> 필드 값이 같다면 두 객체는 같은 객체로 처리

-> 실제 인스턴스 비교시 객체 주소값이 서로 다르므로, hashcode() 및 equals()를 재정의(오버라이딩) 필요

DTO(Data Transfer Object)

단순하게 데이터만 담아 계층 간 전달하는 객체

클래스가 갖고 있는 메서드는 getter / setter 만 존재

-> 오직 데이터 전달에만 초점

VO와 DTO의 차이점

 
VO
DTO
목적
값 자체를 표현
계층간 데이터 전달
동등성
필드값 동일시 같은 객체 취급
필드값이 같아도 같은 객체 X
가변성
불변(수정 불가)
Setter 존재시 가변
Setter 존재 안할시 불가변
로직
Getter / Setter 외의 별도 메서드 추가 가능
Getter / Setter 만 존재해야 함