본문 바로가기
JPA

@GeneratedValue

by 지민재 2023. 11. 21.
반응형
SMALL

@GeneratedValue 


@GeneratedValueJPA(Java Persistence API)에서 엔터티 클래스의 프라이머리 키(Primary Key)를 자동으로 생성하기 위해 사용되는 어노테이션입니다. 이 어노테이션은 주로 데이터베이스에서 자동으로 증가하는 식별자 값을 생성하는 데에 쓰입니다.

@GeneratedValue 어노테이션은 주로 다양한 전략(Strategy)을 사용하여 프라이머리 키를 생성할 때 함께 사용됩니다. 여러 전략 중 가장 흔하게 사용되는 것은 데이터베이스가 지원하는 자동 증가(Auto Increment) 기능을 이용하는 것입니다.

예를 들어, MySQL에서는 AUTO_INCREMENT, Oracle에서는 시퀀스(Sequence)를 사용하여 프라이머리 키를 생성할 수 있습니다.

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // MySQL의 AUTO_INCREMENT와 같은 전략
    private Long id;

    // 나머지 필드 및 메서드들
}
  • @Id: 해당 필드가 엔터티의 프라이머리 키임을 지정합니다.
  • @GeneratedValue(strategy = GenerationType.IDENTITY) : 프라이머리 키의 값을 데이터베이스가 자동으로 생성하도록 지정합니다. GenerationType.IDENTITY는 데이터베이스가 지원하는 자동 증가 기능을 사용하겠다는 것을 나타냅니다.

다른 GenerationType 옵션으로는 SEQUENCE, TABLE, AUTO 등이 있으며, 데이터베이스에 따라 어떤 전략을 사용할지 선택할 수 있습니다. 각 전략에 대한 자세한 내용은 JPA의 스펙이나 해당 데이터베이스의 문서를 참고해야 합니다.

'JPA' 카테고리의 다른 글

JPA - @NoArgsConstructor & @AllArgsConstructor 개념 및 사용법  (0) 2024.05.16
@Builder  (1) 2024.01.04
@NoArgsConstructor  (1) 2023.11.21
JPA - 엔티티 패밍  (0) 2023.04.28
JPA - 영속성 컨텍스트  (0) 2023.04.26

댓글