MappedSuperclass와 임베디드 값 타입은 자주 사용되는 엔티티의 공통된 속성을 모아서 재사용 성을 높이는 방법으로 아주 유사하다. 때문에 둘의 관계가 헷갈릴 수 있어 김영한님의 답변으로 정리하려 한다.
MappedSuperclass는 extends를 이용한 상속을 사용하며 임베디드 값 타입은 참조를 통해 속성값을 위임하여 재사용한다.
결국 상속과 위임이라는 차이가 있는데 하지만 결국 JPA는 객체지향이기 때문에 상속보단 위임을 사용하여 설계하는 것이 더 좋다고 생각하며 김영한님의 답변 역시 같았다.
MappedSuperclass의 경우 정말 거의 모든 엔티티에 사용된다고 생각 되는 속성(등록일, 수정일 등)을 묶어 사용하고 임베디드 값 타입의 경우 여러 엔티티에 사용되지만 많은 곳이 아닌 일부 엔티티에 사용될 때 사용하면 될 것 같다.
그리고 개인적으론 확실히 이해가 안된다면 둘 다 사용하지 않는게 더 좋다고 생각한다.