(JPA) 복합키 설정 방식(@EmbeddedId, @IdClass)

복합 키를 설정하는 방법에는 두 가지가 있습니다.

1. @EmbeddedId 주석 사용

2. @IdClass 주석 사용


@EmbeddedId 주석 사용

복합 키가 있는 엔터티 클래스에서는 복합 키에 대해 별도의 클래스를 만들어야 합니다.

이 클래스에서 복합 키를 구성하는 필드를 선언하고 여기에 @Embeddable 주석을 첨부합니다.

@EmbeddedId 주석이 있는 엔티티 클래스에서 이 클래스를 참조하십시오.

public class OrderProduct {
    @EmbeddedId
    private OrderProductId id;
    
    @Embeddable
    public class OrderProductId implements Serializable {
        @Column(name = "order_id")
        private Long orderId;
        @Column(name = "product_id")
        private Long productId;
    }
}


@IdClass 주석 사용

이 방법을 사용하면 복합 키를 구성하는 필드가 엔티티 클래스에서 직접 선언됩니다.

@Entity
@IdClass(OrderProductId.class)
public class OrderProduct {
    
    @Id
    private Long orderId;
    
    @Id
    private Long productId;
    
}