-
IDENTITY : 데이터베이스에 위임, MYSQL
- 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용 (MySQL - AUTO_INCREMENT)
- JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행
- AUTO_INCREMENT는 데이터베이스에 INSERT SQL을 실행한 이후에 ID 값을 알 수 있음
-
SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE
- @SequenceGenerator 필요
- 데이터베이스 시퀀스는 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트이다. (ORACLE - Sequence)
- allocationSize 속성으로 성능 최적화를 한다.
- 오라클, PostgreSQL, DB2, H2 데이터베이스에서 사용한다.
-
TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용
- @TableGenerator 필요
- 키 생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내내는 전략이다.
- 모든 데이터베이스에 적용 가능하나 성능면에서 좋지 않다.
-
AUTO : 방언에 따라 자동 지정, 기본값