JPA

JPA 기본 키 매핑(Entity Mapping) GenerationType.IDENTITY, SEQUENCE, TABLE

차간단 2024. 2. 22. 15:37
반응형

기본 키 매핑

직접 할당: @Id만 사용

자동 생성(@GeneratedValue)

- IDENTITY: 데이터베이스에 위임, MYSQL

- SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE

    @SequenceGenerator 필요 

- TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용

  @TableGenerator 필요

- AUTO: 방언에 따라 자동 지정, 기본값

 

GenerationType.IDENTITY 특징

기본 키 생성을 데이터베이스에 위임

- 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용 (예: MySQL의 AUTO_ INCREMENT)

- JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행

- AUTO_ INCREMENT는 데이터베이스에 INSERT SQL을 실행 한 이후에 ID 값을 알 수 있음

- IDENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL 실행 하고 DB에서 식별자를 조회

 

GenerationType.SEQUENCE 특징

- 데이터베이스 시퀀스는 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트(예: 오라클 시퀀스)

- 오라클, PostgreSQL, DB2, H2 데이터베이스에서 사용

allocationSize 50 (sequence 50개 미리 생성) 

 

GenerationType.TABLE 특징

키 생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉 내내는 전략

- 장점: 모든 데이터베이스에 적용 가능

- 단점: 성능

반응형