[4단원] 기본키 - TABLE , AUTOINCREMENT 전략

TABLE 전략

  • 정의
    • 키 생성 전용 테이블 활용하여 DB 시퀀스 모방
  • 장점
    • DB안 가리고 모두 활용가능
  • 단점
    • SELECT 로 값을 조회 , UPDATE 로 값을 증가시킴.
      • 시퀀스에 비해 DB 추가 통신이 필요하다는점..
  • 작동 방식
    • 키 생성 용도의 테이블의 생성
    • sequence_name
      • 시퀀스 이름
    • next_val
      • 시퀀스
    create table MY_SEQUENCES (
        sequence_name varchar(255) not null,
        next_val bigint,
        primary key (sequence_name)
    )
    • JPA 에서 미리 값을 넣어둘 필요 X
      • 자동으로 초기화됨

@TableGenerator

  • 기능
    • 테이블 기반의 식별자 생성 전략의 정의
  • 속성
    • name: 식별자 생성기 이름.
    • table: 키 생성 테이블명.
    • pkColumnName, valueColumnName: 시퀀스 컬럼명과 값 컬럼명.
    • pkColumnValue: 키로 사용할 값 이름.
    • initialValue: 초기 값.
    • allocationSize: 호출당 증가량 (최적화 용).
    @Entity
    @TableGenerator (
        name = "BOARD SEQ_GENERATOR",
        table = "MY SEQUENCES",
        pkColumnValue = "BOARD SEQ", 
        allocationSize = 1
    )
    public class Board {
        @Id
        @GeneratedValue(strategy = GenerationType.TABLE, generator = "BOARD_SEQ_GENERATOR")
        private Long id;
    }

AUTO전략

@Entity
public class Board {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
}
  • 정의
    • DB 방언에 따라 IDENTITY, SEQUENCE , TABLE 전략 중 하나 자동 선택
  • 오라클은 SEQUENCE
  • Mysql 은 IDENTITY
  • 장점
    • DB 변경시 코드의 수정이 필요없다!
  • 주의
    • SEQUENCE , TABLE 전략이 선택되면 해당 테이블 또는 시퀀스를 미리 만들어야함


Uploaded by N2T