반응형
이 포스팅에서 작성하는 내용은 자바 ORM 표준 JPA 프로그래밍 (김영한 지음) 에서 발췌하였습니다.
1. 기본 키 매핑
1) 직접 할당
- @Id : 직접 키 값을 넣어줄 경우 사용
2) 자동 생성
- @GeneratedValue
- IDNETITY : 데이터베이스에 위임 (MYSQL 사용 가능)
- 기본 키 생성을 DB에 위임
- 주로 MySQL, OstgreSQL, SQL Server 에서 사용
- ex) MySQL AUTO_INCREMENT
- JPA는 보통 트랜잭션 커밋 시점에 INSERT 쿼리를 날림
- IDENTITY 는 em.persist() 시점에 즉시 INSERT 쿼리를 날려서 PK값(식별자)를 알 수 있음
- SEQUENCE : 데이터베이스 시퀀스 사용 (ORACLE 사용 가능)
- @SequenceGenerator
- name : 식별자 생성기 이름 (필수)
- sequenceName : DB의 시퀀스 이름 (기본값 : hibernate_sequence)
- initialValue : DDL 생성 시에만 사용, 시퀀스 DDL을 생성할 때 처음 시작하는 수를 지정(기본값 : 1)
- allocationSize : 시퀀스 한 번 호출에 증가하는 수. 시퀀스 값이 1씩 증가하면 1로 설정 (기본값 : 50)
- catalog, schema : 데이터베이스 catalog, schema 이름 지정
- @SequenceGenerator
- TABLE : 키 생성용 테이블 사용 (모든 DB 사용 가능)
- 키 생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉내내는 전략
- @TableGenerator
- name : 식별자 생성기 이름 (필수)
- table : 키 생성 전용 테이블 이름 (기본값 : hibernate_sequence)
- pkColumnName : 시퀀스 컬럼명 (기본값 : sequence_name)
- valueColumnNa : 시퀀스 값 컬럼명 (기본값 : next_val)
- pkColumnValue : 키로 사용할 값 이름 (기본값 : 클래스 이름)
- initialValue : 초기 값, 마지막으로 생성된 값이 기준. (기본 값 : 0)
- allocationSize : 시퀀스 한 번 호출에 증가하는 수 (기본값 : 50)
- catalog, schema : 데이터베이스 catalog, schema 이름 지정
- uniqueConstraints (DDL) : 유니크 제약 조건 지정
- AUTO : 방언에 따라 자동 지정 (기본값)
- IDNETITY : 데이터베이스에 위임 (MYSQL 사용 가능)
allocationSize : DB의 Sequence에서 미리 여러개를 가져오는 것. (웹서버에서 미리 여러개를 호출해둠)
권장하는 식별자 형식
- 기본 키 제약 조건 : null X, 유일한 값, 변하지 않는 값
- 권장 : Long형 + 대체키 + 키 생성 전략
반응형
'BE > JPA' 카테고리의 다른 글
[JPA] 호환되는 버전 찾기 (0) | 2022.04.18 |
---|---|
[JPA] 10. 연관관계 매핑 (0) | 2022.04.17 |
[JPA] 8. 엔티티 매핑 (0) | 2022.04.13 |
[JPA] 7. 플러시 & 준영속상태 (0) | 2022.04.13 |
[JPA] 6. 영속성 컨텍스트란? (0) | 2022.04.11 |