일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Invalid bound statement (not found)
- anyMatch
- http
- fixedDelay
- 멱등활용
- KAKAOLOGINAPI
- initialDelay
- 매핑정보가없는필드
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 데이터베이스 방언
- 무상태프로토콜
- JPA
- 네이버 연결된 서비스
- HTTP3
- RFC723x
- 김영한JPA
- @Entity
- HTTPMESSAGE
- 네이버로그인API
- DB방언
- SpringBoot
- Transaction not successfully started
- 캐쉬가능
- org.apache.ibatis.binding.BindingException
- @Table
- gitreset
- Git
- 자바ORM표준프로그래밍
- hibernate.dialect
- gitrevert
- Today
- Total
twocowsong
기본키 매핑 - 기본 키 생성 전략 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
@Id
@Column(name = "id")
private String id;
지금까지 @Id어노테이션만 사용해서 회원의 기본 키를 애플리케이션에서 직접 할당했습니다.
기본 키를 애플리케이션에서 직접 할당하는 대신에 DB가 생성해주는 값을 사용하려면 어떻게 매핑을 해야할까?
(예를들어 Auto_increment같은 기능)
DB마다 기본키를 생성하는 방식이 서로 다르므로 이 문제를 해결하기 쉽지 않습니다.
JPA가 제공하는 DB기본키 생성 전략은 다음과 같습니다.
직접 할당 : 기본 키를 애플리케이션에서 직접 할당합니다.
자동 생성 : 대리 키 사용방식
- IDENTITY : 기본 키 생성을 DB에서 위임
- SEQUENCE : DB 시퀀스를 사용해서 기본키 할당
- TABLE : 키 생성 테이블을 사용
자동 생성 전략이 이렇게 다양한 이유는 DB 벤더마다 지원하는 방식이 다르기 때문입니다.
오라클은 시퀀스를 제공하지만 MySql은 auto_increment기능을 제공합니다.
따라서 SEQUENCE, IDENTITY 전략은 사용하는 DB에 의존합니다.
TABLE전략은 키 생성용 테이블 한개를 두고 시퀀스처럼 사용하는방법입니다.
이전략은 테이블을 활용하므로 모든 DB에서 사용할 수 있습니다.
기본 키를 직접 할당하려면 @Id만 사용하면됩니다.
자동 생성 전략을 사용하려면 @Id에 @GeneratedValue를 추가하고 원하는 키 생성 전략을 선택하면됩니다.
키 생성 전략을 사용하려면 persistence.xml에 아래와같이 속성을 추가해야합니다.
<property name="hibernate.id.new_generator_mappings" value="true" />
앞으로 개발은 위와같이 true로 설정했다고 가정하에 진행하겠습니다.
'IT > JPA' 카테고리의 다른 글
IDENTITY 전략 (0) | 2022.05.13 |
---|---|
기본 키 직접 할당 전략 (0) | 2022.05.13 |
DDL생성 기능 - 제약 조건, 유니크 제약 조건 (0) | 2022.05.10 |
DB스키마 자동 생성 (0) | 2022.05.10 |
@Table (0) | 2022.05.09 |