🧷 @EmbeddedId

정의

@EmbeddedIdJPA에서 복합 키(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 구현이 중요하다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기