spring/study

[Spring] @IdClass에 대해서 알아보자

얼킴 2023. 2. 27. 10:03

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 어노테이션을 필드에 적용하여 각 필드가 복합 키의 일부임을 나타냅니다.