twocowsong

기본키 매핑 - 기본 키 생성 전략 본문

IT/JPA

기본키 매핑 - 기본 키 생성 전략

WsCode 2022. 5. 11. 21:18

깃허브 정리 URL : https://github.com/sWineTake/jpa.git

 

GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한

자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.

github.com

@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