@Embedded는 JPA 어노테이션 중 하나로, 엔티티 클래스에서 다른 클래스를 포함하는 경우에 사용됩니다. @Embedded를 사용하여 다른 클래스를 현재 엔티티의 일부로 포함시킬 수 있습니다.
일반적으로 @Embedded는 값 객체(Value Object)를 엔티티에 포함시키는 경우에 사용됩니다. 값 객체는 여러 개의 속성을 가지며, 주로 엔티티에 의존적인 값을 표현하기 위해 사용됩니다. 예를 들어, 주소(Address)를 값 객체로 정의하여 엔티티에 포함시킬 수 있습니다.
@Embedded 어노테이션을 사용하여 값 객체를 엔티티에 포함시키면, 값 객체의 속성은 엔티티의 테이블에 컬럼으로 매핑됩니다. 따라서 값 객체의 속성들은 엔티티의 컬럼으로 저장되어 관리됩니다.
@Embeddable
public class Address {
private String street;
private String city;
private String zipCode;
}
@Entity
public class User {
@Id
private Long id;
private String name;
@Embedded
private Address address;
//...
}
위 예시에서 Address 클래스는 값 객체로 정의되고 @Embeddable 어노테이션이 지정되었습니다. 이렇게 Address 클래스에 @Embeddable 어노테이션을 지정하면 User 엔티티에 address 필드를 값 객체로 포함시킬 수 있습니다. address 필드의 속성들은 User 엔티티의 테이블에 컬럼으로 매핑됩니다.
따라서 @Embedded 어노테이션을 사용하면 엔티티 클래스에 다른 클래스를 포함시킬 수 있으며, 값 객체를 엔티티에 편리하게 사용할 수 있게 됩니다.