spring/study

[Spring] @Embeddable에 대해서 알아보자

얼킴 2023. 2. 27. 09:47

spring이 지원하는 JPA에서는 여러 개의 Entity로 구성된 객체 모델을 관계형 데이터베이스 테이블로 매핑합니다. 이 때, 객체 모델의 필드 중에는 복합적인 값을 가지는 경우가 있습니다.

 

예를 들어서 Address라는 객체가 있는데, Address는 ciry, street, zipCode 필드로 구성됩니다. 이러한 복합적인 값을 가지는 필드를 매핑하기 위해 @Embeddable을 사용합니다.

 

@Embeddable

@Embeddable 애노테이션은 복합적인 값을 가지는 객체를 정의할 때 사용됩니다. 이 애노테이션을 적용한 클래스는 엔티티의 필드로 사용될 수 있습니다.

 

예를 들어, Address 클래스를 정의하고 이를 @Embeddable 애노테이션으로 마크업하면, 다른 엔티티 클래스에서 Address 필드를 선언할 때 Address 클래스의 인스턴스를 사용할 수 있습니다.

@Embeddable
public class Address {
    private String city;
    private String street;
    private String zipCode;

    // Getter and Setter
}

 

@Embedded

@Embedded 애노테이션은 @Embeddable로 마크업한 클래스를 엔티티의 필드로 사용할 때 적용됩니다.

 

예를 들어, Person 클래스에서 Address 필드를 선언할 때 @Embedded 애노테이션을 사용하여 Address 클래스를 사용할 수 있습니다.

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @Embedded
    private Address address;

    // Getter and Setter
}

 

정리

@Embeddable 애노테이션은 객체 모델에서 복합적인 값을 가지는 필드를 정의할 때 사용됩니다. 이를 @Embedded 애노테이션과 함께 사용하여 엔티티 클래스에서 필드로 사용할 수 있습니다.