일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바ORM표준프로그래밍
- hibernate.dialect
- 매핑정보가없는필드
- RFC723x
- 멱등활용
- initialDelay
- org.apache.ibatis.binding.BindingException
- http
- gitrevert
- gitreset
- SpringBoot
- Invalid bound statement (not found)
- Transaction not successfully started
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- Git
- 김영한JPA
- fixedDelay
- KAKAOLOGINAPI
- DB방언
- @Entity
- 무상태프로토콜
- HTTP3
- 데이터베이스 방언
- @Table
- anyMatch
- 캐쉬가능
- HTTPMESSAGE
- 네이버 연결된 서비스
- 네이버로그인API
- JPA
- Today
- Total
twocowsong
기본 키 매핑 정리 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
영속성 컨텍스트는 엔티티를 식별자 값으로 구분하므로 엔티티를 영속 상태로 만드려면 식별자 값이 반드시 있어야합니다. 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 |