[JPA] 9. 기본키 매핑

2022. 4. 17. 14:08· BE/JPA
목차
  1. 1. 기본 키 매핑 
반응형

자바 ORM 표준 JPA 프로그래밍

 

 

 

 

 

이 포스팅에서 작성하는 내용은 자바 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 이름 지정
    • 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 : 방언에 따라 자동 지정 (기본값)

 

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
  1. 1. 기본 키 매핑 
'BE/JPA' 카테고리의 다른 글
  • [JPA] 호환되는 버전 찾기
  • [JPA] 10. 연관관계 매핑
  • [JPA] 8. 엔티티 매핑
  • [JPA] 7. 플러시 & 준영속상태
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • 코틀린
  • Java to Kotlin
  • MongoDB 기초부터 실무까지
  • 프로젝트로 배우는 Vue.js 3
  • 자바 테스팅 프레임워크
  • 코테공부
  • 자바 개발자를 위한 코틀린 입문
  • 전산회계 2급 준비
  • MongoDB with Node.js
  • 알고리즘 공부
  • Oracle
  • MongoDB 공부
  • 자바 공부
  • 더 자바 Java 8
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • 자기개발
  • 자기 공부
  • 알고리즘공부
  • junit5
  • 자기공부
  • JPA
  • 자기 개발
  • 자바공부
  • Effective Java
  • 이펙티브 자바
  • JPA 공부
  • 이펙티브자바
  • 코테 공부
  • vue3 공부
  • java 8

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[JPA] 9. 기본키 매핑
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.