회원 엔티티는 이름, 근무 시작일, 근무 종료일, 주소 도시, 주소 번지, 주소 우편번호를 가집니다.
이 때 "근무 시작일, 근무 종료일은 공통으로 쓸 수 있지 않을까?", "주소 도시, 주소 번지, 주소 우편번호는 공통으로 쓸 수 있지 않을까?" 라는 생각이 듭니다.
그래서 회원 엔티티는 이름, 근무 기간, 집 주소를 가진다고 추상화해서 설명을 합니다.
이렇게 묶어낼 수 있는게 바로 임베디드 타입입니다. 지금 Period와 Address라는 타입을 만들어냈습니다.
Member는 id, name, workPeriod, homeAddress라는 속성을 가지고 있습니다.
그리고 startDate와 endDate를 묶어서 Period 값 타입을 만들었습니다.
city, street, zipcode를 묶어서 Address 값 타입을 만들었습니다.
쉽게 말해서 클래스 2개를 뽑아낸 겁니다. 문제는 JPA에서 이 것을 어떻게 쓰냐는 겁니다.