728x90
기본 키 매핑 방법
직접 할당
- @Id만 사용 member.setMemberId(1L); 처럼 명시적으로 할당해줘야함
자동 생성
- @GeneratedValue(strategy = GeneratedType.xxx)
IDENTITY
- 기본 키 생성을 데이터베이스에 위임
- 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사용
- ex)MySQL의 AUTO_INCREMENT
- JPA는 일반적으로 트랜잭션 commit 시점에 INSERT SQL을 실행한다.
- 그러나, AUTO_INCREMENT는 데이터베이스에 INSERT SQL을 실행한 후에 ID 값을 알 수 있다.
- IDENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL을 실행하고 DB에서 식별자를 조회한다.
SEQUENCE
- 데이터베이스 시퀀스는 유일한 값을 순서대로 생성하는 오브젝트 사용
- 주로 ORACLE에서 사용
- @SequenceGenerator 필요
TABLE
- 키 생성용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내냄
- 장점
- 모든 DB에서 사용
- 단점
- 성능
- @TableGenerator 필요
AUTO
- JPA가 데이터베이스의 Dialect에 따라 적절한 전략을 자동 지정, 기본값
참고
김영한 - 자바 ORM 표준 JPA 프로그래밍
728x90
'[JAVA] > JPA' 카테고리의 다른 글
JPA - 연관관계 매핑시 고려사항 3가지 (0) | 2022.11.28 |
---|---|
JPA - 연관관계 매핑 (0) | 2022.11.27 |
JPA - 필드와 컬럼 매핑 (0) | 2022.11.27 |
JPA - 객체와 테이블 매핑 (0) | 2022.11.27 |
JPA - flush(플러시) (0) | 2022.11.26 |