키 생성 전략

데이터베이스에서 기본 키(Primary Key) 값을 자동으로 생성하는 방법입니다. JPA에서 @GeneratedValue로 지정합니다.

왜 필요한가?

JPA 키 생성 전략

전략설명
IDENTITYDB의 auto_increment 사용
SEQUENCEDB 시퀀스 사용
TABLE별도 키 생성 테이블 사용
AUTODB에 맞게 자동 선택
UUID랜덤 고유 문자열

각 전략 상세

IDENTITY

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

SEQUENCE

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_seq")
@SequenceGenerator(name = "user_seq", sequenceName = "user_sequence", allocationSize = 50)
private Long id;

TABLE

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;

UUID

@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String id;  // "550e8400-e29b-41d4-a716-446655440000"

전략 비교

전략장점단점적합한 상황
IDENTITY간단배치 INSERT 불가MySQL 단일 서버
SEQUENCE배치 가능, 성능 좋음DB 지원 필요Oracle, PostgreSQL
UUID분산 환경 적합길고 정렬 불가MSA, 분산 시스템

실무 선택 가이드

MySQL → IDENTITY
PostgreSQL/Oracle → SEQUENCE
분산 시스템 → UUID 또는 Snowflake ID

CSLOG에서 보기