본문 바로가기
[JAVA]/JPA

JPA - 기본 키 매핑

by 황원용 2022. 11. 27.
728x90

기본 키 매핑 방법

직접 할당

  • @Id만 사용 member.setMemberId(1L); 처럼 명시적으로 할당해줘야함

 

 

자동 생성

  • @GeneratedValue(strategy = GeneratedType.xxx)

IDENTITY

  • 기본 키 생성을 데이터베이스에 위임
  • 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용
    • ex)MySQL의 AUTO_INCREMENT
  • JPA는 일반적으로 트랜잭션 commit 시점에 INSERT SQL을 실행한다.
  • 그러나, AUTO_INCREMENT는 데이터베이스에 INSERT SQL을 실행한 후에 ID 값을 알 수 있다.
  • IDENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL을 실행하고 DB에서 식별자를 조회한다.

 

SEQUENCE

  • 데이터베이스 시퀀스는 유일한 값을 순서대로 생성하는 오브젝트 사용
  • 주로 ORACLE에서 사용
  • @SequenceGenerator 필요

 

TABLE

  • 키 생성용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내냄
  • 장점
    • 모든 DB에서 사용
  • 단점
    • 성능
  • @TableGenerator 필요

 

AUTO

  • JPA가 데이터베이스의 Dialect에 따라 적절한 전략을 자동 지정, 기본값

 

 

 

참고

김영한 - 자바 ORM 표준 JPA 프로그래밍

728x90

'[JAVA] > JPA' 카테고리의 다른 글

JPA - 연관관계 매핑시 고려사항 3가지  (0) 2022.11.28
JPA - 연관관계 매핑  (0) 2022.11.27
JPA - 필드와 컬럼 매핑  (0) 2022.11.27
JPA - 객체와 테이블 매핑  (0) 2022.11.27
JPA - flush(플러시)  (0) 2022.11.26