작성
·
259
2
개발자님 강의 계속 반복해서 열심히 듣고있습니다
강의 도중에
엔티티는 노출하면 안된다 하지만 Value 오브젝트는 바뀔일이 없기 때문에 노출해도 된다고 하셨는데
만약에
Address 값 객체가 있다고 했을때 Address의 필드 String cityCode가 Interger areaCode로 바뀐다고 해도 문제가 없나요??
답변 2
5
안녕하세요. Yong D님 좋은 질문입니다.
엔티티는 기본적으로 자주 변경되기 때문에 외부에 API로 노출하면 외부 API 스펙자체가 변경되어 버립니다.
반면에 Value 오브젝트는 엔티티와 비교해서 자주 변경되지 않습니다. 예를 들어서 우리가 LocalDateTime이나, String 클래스를 안전하게 외부에 노출해도 되는 이유와 유사합니다.
아마 중간에 변경이 일어난다면 Value 오브젝트가 아니라 보통 엔티티 자체에 추가가 되겠지요.
물론 이러한 Value 오브젝트도 질문하신 것 처럼 변경이 일어날 수 있습니다. 그러면 API 스펙 자체가 틀어지고 API 스펙에 문제가 발생할 수 있습니다.
그래서 Value 오브젝트는 신중하게 설계하고, 크게 변경이 일어나지 않을 때 만드는 것이 좋습니다.
1