엔티티 타입의 특징
- 식별자가 있음
- 생명 주기가 관리됨
- 공유할 수 있음
값 타입의 특징
- 식별자가 없음
- 생명 주기를 엔티티에 의존
- 공유하지 않는 것이 안전 (복사해서 사용)
- 임베디드 타입과 같은 값 타입은 여러 객체에서 공유될 수 있으므로 불변 객체로 만드는 것이 안전함 (생성자로만 값을 설정하고 setter를 만들지 말아야 함)
- 값 타입은 정말 값 타입이라 판단될 때만 사용 (실무에서는 값 타입이 드물게 사용됨)
- 엔티티와 값 타입을 혼동해서 엔티티를 값 타입으로 만들면 안됨
- 식별자가 필요하고, 지속해서 값을 추적/변경해야 한다면 그것은 값 타입이 아닌 엔티티로 구현