[Spring Boot] @GeneratedValue의 생성 전략

송하연·2024년 1월 29일
0

스프링부트🌱

목록 보기
5/8
post-thumbnail

@GeneratedValue 어노테이션은 JPA를 사용하는 경우 엔티티 클래스의 Primary Key값을 생성하는 방식을 지정하는 데 사용된다.

@GeneratedValue의 옵션(생성 전략)

  1. AUTO:
    • 벤더에 따라 자동으로 기본키 생성 방식을 선택
  2. IDENTITY:
    • id값을 따로 할당하지 않아도 데이터베이스가 자동으로 AUTO_INCREMENT를 하여 기본키 생성
    • em.persist() 시점에 쓰기 지연을 하지않고 바로 쿼리를 DB에 날려 데이터를 등록하고 식별자를 리턴받아 1차 캐시에 엔티티 등록
    • 주로 Mysql에서 사용
  3. SEQUENCE:
    • 데이터베이스의 시퀀스(sequence)를 사용하여 기본키 생성
    • @SequenceGenerator가 필요
    • 주로 Oracle에서 사용

@SequenceGenerator(
name = "customer_seq", 
sequenceName = "customer_sequence", 
allocationSize = 1
)
  1. TABLE:

    • 데이터베이스 테이블을 사용하여 기본키 생성
    • 데이터베이스가 지원하지 않을 때나 데이터베이스 독립적인 방법으로 기본키를 생성할 때 사용
    • @TableGenerator가 필요
  2. SEQUENCE-GENERATOR:

  • 사용자가 정의한 시퀀스를 사용하여 기본키 생성
  1. TABLE-GENERATOR:
  • 사용자가 정의한 테이블을 사용하여 기본키 생성

0개의 댓글