VO

    [JAVA] VO(Value Object) 란 무엇인가 ?

    들어가며 VO란 값 객체로만 알고 있었다. 값을 가진 무언가? 라는 개념으로 이해했는데 이에 대해 조금 더 자세히 알고 싶어서 정리해보게 되었다. VO란 ? VO란 값을 가지는 객체. 즉 값 자체로 의미를 갖는 객체이다. 속성 값이 모두 같으면 객체이다. 불변이다. VO를 사용하는 이유 원시값 타입이 도메인 객체를 모델링 하기에 충분하지 않기에 사용한다. 도메인에서 의미있는 값으로 VO를 묶어서 사용해야 한다. 여기서 든 의문은 원시값 포장과 다른점이 뭐지? 라는 것이였다. VO 의 필수조건은 먼저 equals & hashCode 메서드를 재정의 수정할 수 없는 불변 이다. 그러므로 변수를 수정하는 로직이 있다면 이는 VO가 아니다. 원시 타입의 기능을 사용하지 않기에 VO를 사용한다. private f..