spring에서 지원하는 JPA에서는 각 Entity 클래스에서 기본 키(Primary Key, PK)를 지정해야 합니다. 이때, 복합적인 기본 키를 사용하는 경우가 있습니다. spring에서는 @IdClass 어노테이션을 사용하여 복합적인 기본 키를 지정할 수 있습니다.
@IdClass
@IdClass 어노테이션은 복합적인 기본 키를 사용하는 엔티티 클래스에서 기본 키를 정의할 때 사용됩니다. 이 어노테이션을 적용한 클래스는 복합 키를 구성하는 여러 필드를 포함하고 있습니다.
예를 들어, Person 클래스에서 id와 name 필드를 복합 키로 사용하려면, PersonId 클래스를 정의하고 이를 @IdClass 애노테이션으로 마크업합니다.
public class PersonId implements Serializable {
private Long id;
private String name;
// Getter and Setter
}
@Entity
@IdClass(PersonId.class)
@Getter @Setter
public class Person {
@Id
private Long id;
@Id
private String name;
private int age;
}
복합 키 필드의 사용
복합 키를 사용하는 엔티티 클래스에서는 @IdClass로 정의한 클래스를 기본 키로 사용합니다. 이때, @Id 어노테이션을 필드에 적용하여 각 필드가 복합 키의 일부임을 나타냅니다.
PersonId personId = new PersonId();
personId.setId(1L);
personId.setName("홍길동");
Person person = new Person();
person.setId(1L);
person.setName("홍길동");
person.setAge(30);
entityManager.persist(person);
정리
@IdClass 어노테이션을 사용하여 복합적인 기본 키를 정의할 수 있습니다. 이를 사용하여 복합 키를 구성하는 여러 필드를 포함하는 클래스를 정의합니다. 엔티티 클래스에서는 @Id 어노테이션을 필드에 적용하여 각 필드가 복합 키의 일부임을 나타냅니다.
'spring > study' 카테고리의 다른 글
[spring] 객체 지향 설계 5가지 원칙 - SOLID (0) | 2023.02.27 |
---|---|
[spring] Entity Graph에 대해 알아보자 (0) | 2023.02.27 |
[Spring] @Embeddable에 대해서 알아보자 (0) | 2023.02.27 |
[Spring] @Data 에 대해서 알아보자 (0) | 2023.02.25 |
[Spring] Swagger에 대해서 알아보자 (0) | 2023.02.23 |