패스잇
백엔드 개발 · 기초

JPA에서 @GeneratedValue 전략(IDENTITY, SEQUENCE, TABLE, AUTO)의 차이점은?

힌트 · 각 전략의 동작 방식과 배치 INSERT 영향을 비교해보세요.

IDENTITYSEQUENCETABLEAUTO데이터베이스

모범답안

JPA에서 @GeneratedValue는 엔티티의 기본 키 값을 자동으로 생성하는 전략을 지정합니다. 네 가지 주요 전략이 있습니다.

IDENTITY 전략은 데이터베이스의 자동 증가 컬럼 기능을 사용합니다. 엔티티를 저장할 때 데이터베이스가 즉시 ID를 할당하므로, 배치 INSERT 시 각 INSERT 문이 개별적으로 실행되어 성능 저하가 발생할 수 있습니다.

SEQUENCE 전략은 데이터베이스 시퀀스를 사용하여 ID를 생성합니다. 엔티티를 저장하기 전에 시퀀스에서 다음 값을 가져오므로, 배치 INSERT 시에도 시퀀스 값을 미리 가져와 사용할 수 있어 성능에 유리합니다.

TABLE 전략은 별도의 테이블을 생성하여 ID를 관리합니다. 이 테이블에 ID 값을 저장하고 관리하는 방식으로, 데이터베이스 종류에 상관없이 일관된 ID 생성이 가능하지만, 추가적인 테이블 접근으로 인해 성능 오버헤드가 발생할 수 있습니다.

AUTO 전략은 JPA 구현체(예: Hibernate)가 데이터베이스 종류와 설정을 기반으로 IDENTITY, SEQUENCE, TABLE 전략 중 하나를 자동으로 선택합니다. 가장 유연하지만, 어떤 전략이 선택될지 예측하기 어려울 수 있습니다.

요약하자면, IDENTITY는 DB 의존적이고 배치 INSERT에 불리하며, SEQUENCE는 DB 시퀀스를 활용해 배치 INSERT에 유리합니다. TABLE은 범용적이지만 성능 오버헤드가 있고, AUTO는 자동 선택 전략입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JPA / ORM 면접 질문

← JPA / ORM 면접 질문 전체 보기