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

깃허브 정리 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로 설정했다고 가정하에 진행하겠습니다.