JPA에서 @Embedded와 @Embeddable의 용도와 사용법에 대해 설명해주세요.
힌트 · 값 타입 컬렉션과 엔티티의 차이점을 생각해보세요.
JPA에서 @Embedded와 @Embeddable은 값 타입을 정의하고 사용하는 데 사용됩니다.
전체 모범답안 펼치기 접기
JPA에서 @Embedded와 @Embeddable은 값 타입을 정의하고 사용하는 데 사용됩니다.
@Embeddable은 값 타입 클래스 자체에 붙여서, 이 클래스가 다른 엔티티에 포함될 수 있는 값 타입임을 명시합니다. 예를 들어 주소 정보를 담는 Address 클래스에 @Embeddable을 붙일 수 있습니다.
@Embedded는 엔티티 클래스 내에서 @Embeddable로 정의된 값 타입을 필드로 선언할 때 사용합니다. 이를 통해 엔티티는 값 타입의 속성들을 자신의 속성처럼 사용할 수 있게 됩니다. 객체 합성을 통해 코드 재사용성을 높이고, 엔티티를 더 의미있게 구성할 수 있습니다.
값 타입은 엔티티와 달리 식별자를 가지지 않고, 속성 값으로만 구별됩니다. 값 타입의 속성이 변경되면, 해당 값 타입 전체를 새로운 값으로 교체하는 방식으로 동작합니다.