IDENTITY를 기본값처럼 쓰고 마는지, 아니면 배치 인서트·DB 종속성·시퀀스 캐시까지 보고 전략을 고를 줄 아는지를 가른다.
JPA는 식별자를 직접 할당하거나 자동 생성에 맡길 수 있고, 자동 생성은 IDENTITY·SEQUENCE·TABLE·AUTO 중에서 고른다. IDENTITY는 INSERT를 DB에 위임하는 대신 영속화 시점에 쿼리가 즉시 나가서 쓰기 지연·배치 인서트와 잘 맞지 않는다. SEQUENCE는 시퀀스에서 ID를 미리 받아오기 때문에 배치에 강하지만 시퀀스를 지원하는 DB가 있어야 하고, TABLE은 전용 테이블로 시퀀스를 흉내내 호환성은 넓지만 락과 추가 쿼리 비용이 붙는다. AUTO는 방언에 따라 위 셋 중 하나로 풀리므로 'DB 바꿔도 안전한 옵션'이 아니다. 결국 DB 종류와 쓰기 패턴을 같이 보고 골라야 한다.
JPA로 대량 적재 작업을 짜다 INSERT가 한 건씩 나가서 느렸던 경험이 있다면 IDENTITY의 한계와 연결할 수 있다
DB 마이그레이션이나 듀얼 라이트를 겪어봤다면 AUTO·SEQUENCE의 DB 종속성 판단을 자기 사례로 풀어낼 수 있다
시퀀스 캐시·allocationSize를 운영 중에 튜닝해본 적이 있다면 처리량 변화 수치를 들어 SEQUENCE 최적화를 설명할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.