[인프런 김영한] JPA - 기본키 매핑 방법(@Id, @GeneratedValue)

2021. 2. 7. 15:54프로그래밍 언어/Spring Framework

[인프런 김영한] JPA - 기본키 매핑 방법(@Id, @GeneratedValue)


해당 글은 인프런 김영한강사님의 영상을 보고 정리한 글입니다.

Spring Boot, Spring Data JPA를 사용해 실습하였습니다.

김영한 인프런 : www.inflearn.com/users/@yh

 

인프런 - 김영한의 강의들을 만나보세요.

우아한형제들 개발 팀장 (전: 카카오, SK플래닛) 저서: 자바 ORM 표준 JPA 프로그래밍

www.inflearn.com


▣ 직접 할당

- @Id만 사용

@Id
private Long id;

 

▣ 자동 생성

- @GeneratedValue

- @GeneratedValue(strategy = 속성)

@Id 
@GeneratedValue
private Long id;

 

 - AUTO : 방언에 따라 자동 지정(Default)

 

 - IDENTITY : 데이터베이스에 위임 (MYSQL, PostgreSQL, DB2 등)

 > INSERT SQL을 실행 후 id값을 알 수 있음

 > MYSQL는 auto_increment

 

 - SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용 (Oracle, DB2, H2, PostgreSQL 등)

 > DB에서 시퀀스 전략을 지원해야 사용할 수 있습니다.

 > @SequenceGenerator와 함께 사용할 수 있으며 세부적으로 설정할 수 있습니다.

 

 - TABLE : 키 생성용 테이블 사용

 > 키생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내내는 전략입니다.

 > 모든 DB에서 지원하지만 단점으로는 테이블을 직접 사용하기 때문에 성능의 이슈가 있을 수 있습니다.

 

 

▣ 권장하는 식별자 전략

 - 기본키 제약조건 : null이면 안됨, 유일해야함, 변하면 안됨. (주민등록번호도 기본키로 적절하지 않다.)

 - 권장 : Long + 대체키 + Key 생성 전략