[JPA] 기본 키 생성 전략
기본키 매핑 방법
기본키 매핑 방법은 크게 직접할당과 자동생성이 있다.
직접할당은 잘 쓰는지 모르겠지만, 자동생성 위주로 적어보려고 한다.
자동생성
자동생성 방식은 크게 3가지가 있다.
IDENTITY : 기본키 생성을 데이터베이스에 위임
SEQUENCE : 데이터베이스 시퀀스 이용
TABLE : 키 생성 테이블 사용
우선, IDENTITY와 SEQUENCE는 데이터베이스에 종속적이다.
오라클 데이터베이스의 경우 시퀀스를 제공하기 때문에 SEQUENCE 방식을 이용할 수 있지만, Mysql은 시퀀스가 존재하지 않아 AUTO_INCREMENT 기능을 이용한다.
TABLE의 경우 키 생성용 테이블을 만들어놓고 시퀀스처럼 사용하는 방법이기 때문에 모든 데이터베이스에서 사용가능하다.
IDENTITY 전략
기본 키 생성을 데이터베이스에 위임하는 전략이다. 현재 Mysql로 토이프로젝트를 하고 있는데 Mysql의 경우 IDENTITY 전략을 이용한다.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
코드는 위와 같이 작성하면 된다.
IDENTITY 전략은 데이터를 데이터베이스에 insert 한 후 기본 키 값을 조회하는 것이다.
따라서 데이터베이스를 조회해야만 식별자를 할당할 수 있는데, jdbc3에서는 Statement.getGeneratedKey() 메서드를 사용하면 데이터를 저장하면서 동시에 생성된 기본 키값 얻어올 수 있다. (하이버네이트도 이 메소드를 사용한다고 한다.)
엔티티가 영속 상태가 되려면 식별자가 필요한데, IDENTITY 전략은 데이터베이스에 저장해야 식별자를 구하므로 쓰기 지연이 동작하지 않는다.
결론
기본키 생성 전략
직접할당
자동생성 - IDENTITY, SEQUENCE, TABLE
SEQUENCE 나 TABLE 은 아직 사용해본 적이 없어서 나중에 해볼 기회가 있을 때 정리해보려고 한다.
참고
자바 ORM 표준 JPA 프로그래밍 - 김영한
Author And Source
이 문제에 관하여([JPA] 기본 키 생성 전략), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yajungi/JPA-기본-키-생성-전략저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)