본문 바로가기
Spring

[JPA] 기본 키 매핑 방법 - @Id, @GeneratedValue

by diaryDev 2024. 12. 27.
728x90

기본 키 매핑 방법

1. 직접 할당

2. 자동 생성

 

직접 할당 - @Id

기본키를 애플리케이션에서 직접 할당하는 방식

직접할당의 경우 휴먼 에러 발생 가능성이 크다.

 

@Id 사용

@Id
private Long id;

 

자동 생성 - @GeneratedValue

기본 키 생성을 데이터베이스에 위임하는 전략

(MySQL의 AUTO_INCREMENT 같은 기능으로 생성된 값을 기본키로 사용하는 것이다.)

 

@GeneratedValue 사용

@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

 

 

Id값을 만들어주는 4가지 생성전략

1. IDENTITY : 기본 키 생성을 데이터베이스에 위임

2. SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용(@SequenceGenerator 필요)

3. TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용(@TableGenerator 필요)

4. AUTO: 방언에 따라 자동 지정, 기본값

 

권장하는 식별자 선택 전략

기본 키 제약 조건

1. null이 아니다.

2. 유일하다.

3. 변하면 안된다.

 

미래까지 이 조건을 만족하는 자연키는 찾기 어려우니 대리키(대체키)를 사용하자

ex) 주민등록번호도 기본 키로 적절하지 않다.

 

권장 : Long 형 + 대체키 + 키 생성전략 사용

 

 

 

 


 

 

참고

https://gmlwjd9405.github.io/2019/08/12/primary-key-mapping.html

자바 ORM 표준 JPA 프로그래밍 - 기본편

728x90

'Spring' 카테고리의 다른 글

[JPA] @GeneratedValue - SEQUENCE  (0) 2025.01.01
[JPA] @GeneratedValue - IDENTITY  (0) 2024.12.30
[JPA] @Lob  (1) 2024.12.25
[JPA] @Transient  (0) 2024.12.23
[JPA] @Temporal  (1) 2024.12.20