오늘은 VO(Value Object) 객체에 대해서 정리릏 해보려고 한다.
VO에 대해서 검색을 해보면 VO, DTO, Entity에 대해서 여러 정리글들이 나온다.
이번 포스팅의 목적은 VO 객체가 무엇이고, DTO, Entity와의 차이점은 무엇인지 내가! 공부하기 위해 정리하는 포스팅이다.
결론부터 이야기 하면 VO는 도메인에서 한개 또는 그 이상의 속성들을 묶어서 특정 값을 나타내는 객체를 말한다.
예를 들어, 좌표계 , 주소 정도를 표현할 수 있겠다.
VO 객체는 별도의 식별자가 없기 떄문에 프로퍼티(속성) 그 자체가 식별자가 된다.
따라서, VO 객체가 서로 같다는 의미는 내부 프로퍼티가 모두 일치하다는 의미가 되며, 이를 구현하기 위해서는 equals와 hash code를 재정의해줘야한다.
불변객체는 상당히 자주 언급되는 말이다. Object, 도메인 주도 설계, 이펙티브 자바 등등에서 불변 객체의 중요성을 자주 언급하고 있다.
마찬가지로 VO객체는 식별자가 따로 없기 때문에 프로퍼티가 변경되면 다른 객체가 되어버린다. 그 뿐만 아니라 복사해서 사용할때 원본 객체까지 변경되는 문제를 갖기 떄문에 불변 객체로 만들어야 한다.
https://maenco.tistory.com/entry/Java-DTO%EC%99%80-VO%EC%9D%98-%EC%B0%A8%EC%9D%B4