JPA 기본 키 매핑

김두현·2023년 4월 24일
1

JPA

목록 보기
5/14
post-thumbnail

Goal

  • 기본 키 매핑 방법에 대해 파악한다.
    • 직접 할당 : @Id
    • 자동 생성
      • AUTO
      • IDENTITY
      • SEQUENCE
      • TABLE

직접 할당 : @Id만 사용

  • 개발 진영에서 setter를 통해 직접 생성한다.

직접 할당 : AUTO

  • default로서, 방언에 따라 자동 지정된다.

자동 생성 : IDENTITY

  • 기본 키 생성을 DB에게 위임한다.
  • 일반적인 경우와 달리, persist() 시점에 INSERT query를 실행한다.
    • IDENTITY 전략은 DB가 기본 키를 생성하므로, 엔티티의 식별자 필드에 할당하기 위해서는 INSERT query가 실행된 후 DB에서 식별자 값을 가져와 엔티티에 할당한다.

자동 생성 : SEQUENCE

  • DB에서 식별자 값을 생성하는 SEQUENCE 오브젝트를 생성해 식별자 값을 할당한다.

@SequenceGenerator

  • @SequenceGenerator : SEQUENCE 전략을 사용하기 위한 annotation이다.

속성

  • name (필수 속성) : 식별자 생성기 이름
  • sequenceName : DB에 등록된 sequence 이름
  • initialValue : DDL 생성 시 처음 시작하는 수 지정
  • allocationSize : 한 번 호출 시 증가하는 수. 성능 최적화에 사용된다.
    • default : 50
  • catalog, schema

자동 생성 : TABLE

  • DB에 키 생성 전용 테이블을 생성한다.
    • 장점 : SEQUENCE 전략을 흉내냄으로써 모든 테이블에 적용이 가능하다.
    • 단점 : 식별자 생성 시마다 테이블에 접근해 식별자 값을 증가시키는 작업이 빈번해지므로 DB의 성능이 저하된다.

@TableGenerator

  • @TableGenerator : TABLE 전략을 사용하기 위한 annotation이다.

속성

  • name (필수 속성) : 식별자 생성기 이름 (자바 진영)
  • table : 식별자 생성 table 이름
  • pkColumnName : sequence 컬럼명
  • valueColumnName : sequence value 컬럼명
  • initialValue : 초기 값. 마지막으로 생성된 값이 기준
    • default : 0
  • allocationSize : 한 번 호출 시 증가하는 수. 성능 최적화에 사용된다.
    • default : 50
  • catalog, schema
  • uniqueConstraints : 유니크 제약 조건 지정

참고 자료

https://www.inflearn.com/course/ORM-JPA-Basic


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글