[4단원] 기본키 - SEQUENCE 전략

SEQUENCE?

  • DB 시퀀스는 유일한 값을 순서대로 생성하는 DB 오브젝트
  • 오라클 PostgreSQL 등 데이터베이스에서 사용 가능

시퀀스 사용방법

  • JPA 에서는 @SequenceGenerator 으로 시퀀스 매핑가능
@Entity
@SequenceGenerator (
  name = "BOARD_SEQ_GENERATOR",
  sequenceName = "BOARD_SEQ", 
  initialValue = 1, allocationSize = 1
)
public class Board {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "BOARD_SEQ_GENERATOR")
    private Long id;
}
  • 주의
    • @SequenceGenerator.allocationSize의 기본값은 50
    • 해당 값이 기본 값으로 설정되는 경우 시퀀스 값이 한 번 호출 시 마다 50 증가함
    • 기본값을 사용하려면 증가 값을 반드시 1로 설정

질문

  1. SEQUENCE 와 IDENTITY 의 차이점❗❗
    1. 시퀀스
      1. 식별자를 조회하기 위해 먼저 DB 시퀀스 호출
      1. 시퀀스 값을 엔티티에 할당
      1. 엔티티 저장
    1. IDENTITY
      1. 엔티티를 DB에 저장
      1. 그 후 식별자 조회
      1. 엔티티 할당
  1. @SequenceGenerator 속성
    • name
      • 생성기 이름
    • sequenceName
      • 실제 DB의 시퀀스 이름
    • initialValue
      • 시퀀스의 시작값
      • DDL 생성시에만 사용
    • allocateSize
      • 시퀀스 호출 시 증가하는 값
      • 주로 성능의 최적화시 사용함

Uploaded by N2T