티스토리 뷰

JPA에서 @IdClass를 사용한 복합 주키 매핑
자바 영속성 API(JPA)에서는 @IdClass 주석을 사용하여 복합 주키를 지정합니다.
이를 통해 엔터티 클래스와 별도로 기본 키 클래스를 정의할 수 있습니다.
예제를 통해 @IdClass를 사용하여 복합 주키 매핑하는 방법을 살펴보겠습니다.

엔터티 클래스: UserGroupMappingEntity

java
Copy code
import javax.persistence.*;

@Getter
@Setter
@ToString
@Entity
@Table(name = "user_group_mapping")
@IdClass(UserGroupMappingId.class)
public class UserGroupMappingEntity extends BaseEntity {

    @Id
    @Column(name = "user_group_id")
    private String userGroupId;

    @Id
    @Column(name = "user_id")
    private String userId;

    @Column(name = "user_group_name")
    private String userGroupName;

    private String description;
}

기본 키 클래스: UserGroupMappingId

java
Copy code
import java.io.Serializable;

@Getter
@Setter
@ToString
public class UserGroupMappingId implements Serializable {

    private String userGroupId;

    private String userId;
}

이 예제에서는:

  • UserGroupMappingEntity 클래스는 "user_group_mapping" 테이블에 매핑된 엔터티를 나타냅니다.
  • @IdClass(UserGroupMappingId.class)를 사용하여 UserGroupMappingId 클래스가 이 엔터티의 복합 기본 키를 포함한다는 것을 지정합니다.
  • UserGroupMappingId 클래스는 복합 기본 키 필드 userGroupId와 userId를 정의합니다.
  • UserGroupMappingEntity 클래스의 기본 키 필드는 @Id로 주석이 달려 있으며, 이는 이들이 복합 기본 키의 일부임을 나타냅니다.
  • UserGroupMappingEntity 클래스의 다른 필드는 테이블의 열에 매핑됩니다.

이 접근 방식을 사용하면 엔터티 모델에서 복합 기본 키를 깔끔하게 나타낼 수 있으며, 특히 기존 데이터베이스나 복합 기본 키가 있는 테이블과 작업할 때 유용합니다.

댓글
Total
최근에 올라온 글