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
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 |