- 기본 키 매핑 방법에 대해 파악한다.
- 직접 할당 : @Id
- 자동 생성
- AUTO
- IDENTITY
- SEQUENCE
- TABLE
- 개발 진영에서 setter를 통해 직접 생성한다.
- default로서, 방언에 따라 자동 지정된다.
- 기본 키 생성을 DB에게 위임한다.
- 일반적인 경우와 달리,
persist()
시점에 INSERT query를 실행한다.
- IDENTITY 전략은 DB가 기본 키를 생성하므로, 엔티티의 식별자 필드에 할당하기 위해서는 INSERT query가 실행된 후 DB에서 식별자 값을 가져와 엔티티에 할당한다.
- DB에서 식별자 값을 생성하는 SEQUENCE 오브젝트를 생성해 식별자 값을 할당한다.
@SequenceGenerator
- @SequenceGenerator : SEQUENCE 전략을 사용하기 위한 annotation이다.
속성
- name (필수 속성) : 식별자 생성기 이름
- sequenceName : DB에 등록된 sequence 이름
- initialValue : DDL 생성 시 처음 시작하는 수 지정
- allocationSize : 한 번 호출 시 증가하는 수. 성능 최적화에 사용된다.
- default : 50
- catalog, schema
- DB에 키 생성 전용 테이블을 생성한다.
- 장점 : SEQUENCE 전략을 흉내냄으로써 모든 테이블에 적용이 가능하다.
- 단점 : 식별자 생성 시마다 테이블에 접근해 식별자 값을 증가시키는 작업이 빈번해지므로 DB의 성능이 저하된다.
@TableGenerator
- @TableGenerator : TABLE 전략을 사용하기 위한 annotation이다.
속성
- name (필수 속성) : 식별자 생성기 이름 (자바 진영)
- table : 식별자 생성 table 이름
- pkColumnName : sequence 컬럼명
- valueColumnName : sequence value 컬럼명
- initialValue : 초기 값. 마지막으로 생성된 값이 기준
- default : 0
- allocationSize : 한 번 호출 시 증가하는 수. 성능 최적화에 사용된다.
- default : 50
- catalog, schema
- uniqueConstraints : 유니크 제약 조건 지정