티스토리 뷰
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
최근에 올라온 글