@EmbeddedId
🧷 @EmbeddedId
정의
@EmbeddedId는 JPA에서 복합 키(Composite Key)를 엔티티의 기본 키로 사용하기 위한 애너테이션이다.@Embeddable클래스를 기본 키 타입으로 정의한 뒤, 엔티티에서 그 객체를 식별자로 사용한다.
복합 키를 여러 컬럼 조합으로 관리해야 할 때 사용한다.
🧩 역할
- 복합 키를 하나의 객체로 묶어서 관리한다
- 엔티티의 기본 키를 객체 타입으로 정의할 수 있게 한다
- 키 구성 요소를 코드상에서 더 명확하게 표현할 수 있다
🛠 사용법
@Embeddable로 복합 키 정의
import java.io.Serializable;
import javax.persistence.Embeddable;
@Embeddable
public class OrderKey implements Serializable {
private Long orderId;
private Long productId;
// 기본 생성자, equals(), hashCode() 필수 구현
}
엔티티에서 @EmbeddedId로 사용
import javax.persistence.*;
@Entity
public class Order {
@EmbeddedId
private OrderKey id;
private String orderStatus;
}
⚠️ 주의사항
@EmbeddedId에 사용하는 클래스는Serializable을 구현하는 것이 일반적이다.equals()와hashCode()를 반드시 올바르게 구현해야 한다.- 복합 키 값은 엔티티 식별자이므로 변경 가능성을 신중히 검토해야 한다.
- 단순히 여러 컬럼을 묶는 용도라면
@IdClass와 비교해서 선택하는 것이 좋다.
📌 정리
@EmbeddedId는 복합 키를 엔티티의 기본 키로 사용할 때 쓰는 애너테이션이다.- 복합 키 타입은 보통
@Embeddable로 정의한다. equals(),hashCode(),Serializable구현이 중요하다.
댓글남기기