Note

[TIL] JPA의 기본 키 생성 전략

by 달쿨

TIL

상황

프로젝트 초반, 엔티티 설계 단계에서 알게 된 내용이다. 프로젝트 요구사항 중 테이블의 기본 키로 UUID를 사용해야 한다는 요구사항이 있었다. 기존에 JPA를 사용하며 기본 키를 생성할 때는 보통 @GeneratedValue(strategy=GenerationType.IDENTITY) 를 활용했기 때문에 어떻게 사용할지 의견을 나누었고 공통 클래스를 만들어 ID 생성 시마다 직접 메서드를 호출해 생성한 값을 기본 키로 설정하도록 했다.

처음에 작성한 UUID 생성을 위한 공통 클래스

하지만 이후 JPA가 UUID를 기본 키로 자동 생성하는 전략을 갖고 있다는 사실을 알게 되었다. @GeneratedValue(strategy=GenerationType.UUID) 을 적용하면 공통 클래스를 따로 만들지 않고도 UUID를 자동 생성할 수 있었다.

 

JPA 기본 키 생성 전략

궁금해져서 JPA가 제공하는 기본 키 생성 전략들을 더 찾아보았고, 기본적으로 AUTO, IDENTITY, SEQUENCE, TABLE, UUID 5개의 생성 전략을 제공한다는 것을 알게 되었다. 간단하게 정리하면 다음과 같다.

  • GenerationType.AUTO: 사용하는 데이터베이스에 따라 적절한 기본 키 생성 전략을 자동으로 선택한다
  • GenerationType.IDENTITY: 데이터베이스의 IDENTITY 컬럼을 사용하여 기본 키를 생성한다. 
  • GenerationType.SEQUENCE: 데이터베이스의 시퀀스를 사용하여 기본 키를 생성한다.
  • GenerationType.TABLE: 별도의 키 생성 테이블을 생성하고, 테이블 값을 읽어 기본 키로 사용한다.
  • GenerationType.UUID: UUID를 사용하여 기본 키를 생성한다.

 

느낀 점

IDENTITY 외의 다른 JPA의 기본 키 생성 전략에 대해 알 수 있었고, 요구사항에 따라 JPA의 적극적으로 활용해보면 좋을 것 같다고 느꼈다.

블로그의 정보

note

달쿨

활동하기