twocowsong

기본 키 매핑 정리 본문

IT/JPA

기본 키 매핑 정리

WsCode 2022. 5. 16. 21:09

깃허브 정리 URL : https://github.com/sWineTake/jpa.git

 

GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한

자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.

github.com

영속성 컨텍스트는 엔티티를 식별자 값으로 구분하므로 엔티티를 영속 상태로 만드려면 식별자 값이 반드시 있어야합니다. em.persist()를 호출한 직후에 발생하는 일을 식별자 할당 전략별로 정리하면 다음과 같습니다.

 

직접 할당 : em.persist()를 호출하기 전에 애플리케이션에서 직접 식별자 값을 할당해야 합니다.

               만약 식별자 값이 없으면 예외가 발생합니다.

 

SEQUENCE : DB 시퀀스에서 식별자 값을 획득한 후 영속성 컨텍스트에 저장합니다.

                 em.persist()전에 DB를 접근하여 시퀀스 값을 얻어냅니다.

 

TABLE : DB 시퀀스 생성용 테이블에서 식별자 값을 획득한 후 영속성 컨텍스에 저장합니다.

 

IDENTITY : DB에 엔티티를 저장해서 식별자 값을 획득한 후 영속성 컨텍스트에 저장합니다.

               em.persist() 실행 후 식별자값을 얻어냅니다.

 

권장하는 식별자 선택 전략은 아래와 같습니다.

1. null 값은 허용하지않습니다.

2 유일해야 합니다.

3. 변해서는 안됩니다.

 

테이블의 기본 키를 선택하는 전략은 크게 2가지가 있습니다.

- 자연 키 : 비즈니스에 의미가 있는 키 ex) 주민등록 번호, 이메일, 전화번호

- 대리키 : 비즈니스와 관련 없는 임의로 만들어진 키 (대체키) ex) 시퀀스, auto_increment, 키생성 테이블

 

JPA는 모든 엔티티에 일괄된 방식으로 대리 키 사용을 권장합니다.

비즈니스 요구사항은 계속해서 변하는데 테이블은 한 번 정의하면 변경하기 어렵습니다.

그런 면에서 외부 풍파에 쉽게 흔들리지않는 대리 키가 일반적으로 좋습니다.

 

'IT > JPA' 카테고리의 다른 글

@Enumerated  (0) 2022.05.19
필드와 컬럼 매핑 : @Column  (0) 2022.05.18
AUTO 전략  (0) 2022.05.16
TABLE 전략  (0) 2022.05.15
SEQUENCE 전략  (0) 2022.05.14