Sequence 생성 전략

강한친구·2022년 8월 31일
0

JPA

목록 보기
27/27

참고

어노테이션 GeneratedValue

PK를 자동생성해줄때 자주 사용하는 어노테이션이다.

이렇게 하이버네이트 시퀀스를 이용해서 값을 자동생성해주는데, 이때 pk값은 전체 테이블이 공유하게 된다.
즉, 하나의 숫자가 중구난방으로 나오게 되는것이다.

이를 해결하기 위한 전략을 정리하도록 하겠다.

전략은 크게 4개가 존재한다.

Auto(Default)

아무런 옵션을 주지 않으면 기본값으로 설정된다.
JPA 구현체가 자동으로 생성 전략을 결정하며, Hibernate Sequence Table을 생성하고 그 안에 있는 값을 활용해서 처리한다.

Identity

기본기 생성을 사용하는 DB에게 위임한다. DB는 자신의 기본 방식대로 기본키를 생성한다. Mysql의 경우 auto_increment를 사용해서 생성하게 된다.

Table

@TableGenerator를 이용해서 시퀀스 관리용 테이블을 만들고, 이를 사용하는 방식이다,

참조

Sequence

@SequenceGenerator를 이용해서 시퀀스를 만들고 이를 할당해주는 방식이다. 각 테이블별로 키를 별도로 보관하고 관리할 때 유용하다고 생각한다.

    @SequenceGenerator(
            name = "apexgall_SEQ_GENERATOR",
            sequenceName = "APEXGALL_SEQ", // 매핑할 데이터베이스 시퀀스 이름
            initialValue = 1,
            allocationSize = 1)
    @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "apexgall_SEQ_GENERATOR")
    @Column(name = "Post_Id")

0개의 댓글