일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ORM
- 자바스크립트
- 공백검사
- msa
- 모던 자바스크립트 Deep Dive
- 스프링 시큐리티
- UUID
- 게시판 작성자를 아이디로
- java
- JPA
- 관계형 데이터베이스
- 자바
- 중복되지 않는 값 만들기
- 출처 모던 자바스크립트 Deep Dive
- 유효성검사
- Thymeleaf
- 자바 ORM 표준 JPA 프로그래밍
- spring security
- Today
- Total
인지용
JPA - 기본 키 매핑 본문
기본키를 @Id 어노테이션만 사용해서
애플리케이션에서 직접 할당하는 대신에
DB에서 생성해주는 값을 사용하려면 어떻게 매핑해야할까
예를들어
오라클의 시퀀스 오브젝트,
MySQL의 AUTO_INCREMENT
기본키란 ?
영속성 컨텍스트에 저장할 키 값으로 사용하기 위해서 필수적인 키이다.
JPA가 제공하는 데이터베이스 기본 키 생성 전략 종류
직접 할당 : 기본 키를 애플리케이션에서 직접 할당한다.
자동 생성 :
- IDENTITY : 기본 키 생성을 데이터베이스에 위임한다.
- SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당한다.
- TABLE : 키 생성 테이블을 사용한다.
IDENTITY 전략
주로 MySQL에서 사용한다
IDENTITY 전략은 데이터베이스에 INSERT한 후에
기본 키값을 조회할 수 있다.
이 전략을 사용하면 JPA는 기본 키 값을 얻어오기 위해 DB를 추가로 조회한다.
( 엔티티에 식별자 값을 할당하려면 JPA는 추가로 DB를 조회해야 하는데
JDBC3에 추가된 Statement.getGeneratedKeys()를 사용하면
데이터를 저장하면서 동시에 생성된 기본 키 값도 얻어올 수 있다.
하이버네이트는 이 메소드를 사용해서 DB와 한번만 통신한다. )
( 난 mysql을 쓰니까 일단 이것만 적어놔야겠다 ㅋㅋ )
자동 생성 전략이 다양한 이유
데이터베이스 벤더마다 지원하는 방식이 다르기 때문이다.
오라클은 시퀀스 제공 o
MySQL은 시퀀스 제공 x
대신 MySQL은 AUTO_INCREMENT 기능을 제공
결론
따라서 SEQUENCE나 AUTO_INCREMENT 전략은
사용하는 데이터베이스에 의존한다.
출처
자바 ORM 표준 JPA 프로그래밍
'JPA & Querydsl' 카테고리의 다른 글
jpa 사소한 정보들 (0) | 2022.01.03 |
---|---|
JPA 엔티티 매핑 - 대표적 어노테이션 (0) | 2021.11.03 |