Spring

임베디드 타입

yougeun 2023. 3. 27. 17:04
728x90

임베디드 타입 정의

@Embeddable
public class Address {

    private String city;
    private String street;
    private String zipcode;
    
    public Address() {
    }
    ...
 }

@Embeddable 어노테이션을 사용하여 임베디드 타입을 정의할 수 있다.

임베디드 타입은 기본생성자가 필수로 있어야한다.

임베디드 타입 사용

@Entity
@Table(name = "ORDERS")
public class Order {
    @Id @GeneratedValue
    private Long id;
    private int orderAmount;
    @Embedded
    private Address address;
    ...
}

임베디드 값타입을 사용하는 엔티티에 @Embedded 어노테이션을 사용한다.

한 엔티티에서 같은 임베디드 타입을 사용할 경우

public class Member {
    @Id @GeneratedValue
    private Long id;
    private String username;
    private int age;
    
    @Embedded
    @AttributeOverrides({
            @AttributeOverride(name = "city",column = @Column(name = "work_city")),
            @AttributeOverride(name = "street",column = @Column(name = "work_street")),
            @AttributeOverride(name = "zipcode",column = @Column(name = "work_zipcode"))
    })
    private Address workAddress;

    @Embedded
    private Address homeAdrress;
    ...
}

@AttributeOverrides, @AttributeOverride를 사용해서 칼럼명 속성을 재정의하면 같은 임베디드 타입을 사용가능하다.

728x90