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