@GeneratedValue
@GeneratedValue는 JPA(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 |
댓글