JPA 엔티티의 식별자(Id)를 생성하는 방법을 지정하는데, 이를 GenerationType이라고 함
GenerationType은 다양한 전략을 제공하여 식별자를 자동으로 생성할 수 있음
1. AUTO
- 기본 값이며, 데이터베이스에 따라 자동으로 식별자를 생성
- 예를 들어, PostgreSQL에서는 SEQUENCE, MySQL에서는 AUTO_INCREMENT를 사용
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
2. IDENTITY
- 데이터베이스에 의존하는 자동 증가 식별자를 사용
- 예를 들어, MySQL의 AUTO_INCREMEN와 같이 사용
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
3. SEQUENCE
- 데이터베이스에서 시퀀스를 사용하여 식별자를 생성
- 주로 Oracle, PostgreSQL 같은 데이터베이스에서 사용
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
- SequenceGenerator를 직접 정의할 때
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "your_sequence_name")
@SequenceGenerator(name = "your_sequence_name", sequenceName = "your_sequence_name", allocationSize = 1)
private Long id;
4. TABLE
- 데이터베이승의 테이블을 사용하여 식별자를 생성
- 일반적으로 성능 이슈가 있으므로 자주 사용되지 않는다고 함
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "your_table_name")
@TableGenerator(name = "your_table_name", allocationSize = 1)
private Long id;
5. NONE
- JPA가 자동으로 식별자를 생성하지 않도록 지정
- 수동으로 식별자를 할당하려는 경우에 사용
@Id
@GeneratedValue(strategy = GenerationType.NONE)
private Long id;
'Spring' 카테고리의 다른 글
Java Spring JWT 생성 및 검증 로직 구현 (0) | 2024.01.11 |
---|---|
Java Spring에서 JWKS(JSON Web Key Set) API 구현 (1) | 2024.01.11 |
Spring JPA hibernate.ddl-auto 정리 (0) | 2023.12.04 |
Spring @RestControllerAdvice 적용 (0) | 2023.11.09 |
Spring Validation 특정 String만 받도록 검증 하기 (0) | 2023.11.09 |
댓글