그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록JPA
JPA

Spring Data JPA에서 새로운 Entity인지 판단하는 방법은 무엇일까요?

실무4/5
설계4/5
인간4/5
기초2/5

면접관의 질문 의도

save가 "무조건 insert"라고 믿는지, persist/merge 분기와 isNew 판별 규칙까지 잡는 사람인지를 가른다.

큐레이션 답변

학습 자료

Spring Data JPA의 SimpleJpaRepository.save는 JpaEntityInformation.isNew(entity) 결과로 persist와 merge 중 어느 쪽으로 갈지 분기한다. 기본 구현은 @Version 필드가 있으면 그 값의 null 여부, 없으면 @Id 타입과 값(null 또는 primitive 0)을 기준으로 "신규"인지 판단한다. 그래서 GenerationType.IDENTITY/SEQUENCE처럼 DB가 ID를 할당해주면 자연스럽게 isNew=true가 잡히지만, _UUID나 외부 키처럼 ID를 직접 할당_하면 isNew=false가 되어 merge 경로로 들어가 select-then-update가 돈다. 이 경우 Persistable을 구현해 isNew를 명시적으로 제공하거나 EntityManager.persist를 직접 호출하는 게 정공법이다.

좋은 답변 구조

  1. 01SimpleJpaRepository.save에서 persist/merge가 isNew로 분기된다는 구조를 정의한다
  2. 02@Version 우선 → @Id 타입/값(null·0) 기준이라는 단계별 판별 흐름을 설명한다
  3. 03직접 ID 할당 시 isNew=false로 잡혀 merge 경로로 빠지는 _예외 동작_을 짚는다
  4. 04Persistable 구현·persist 직접 호출 같은 해결책과 운영 영향(select-then-merge 폭발)을 연결한다

자주 실수하는 포인트

save가 항상 insert를 시도한다고 가정한다
persist와 merge의 SQL 차이를 isNew 판별과 연결하지 못한다
직접 ID 할당(UUID·외부 키) 상황에서 Persistable이라는 대안을 떠올리지 못한다
신규 판별이 틀려 대량 저장에서 select가 폭증하는 증상을 "DB가 느리다"로 잘못 진단한다

실무 맥락

  • 외부 시스템에서 받은 키나 UUID를 그대로 PK로 쓰는 도메인 모델
  • saveAll로 수천 건을 저장하는데 SQL 로그에 select가 함께 폭증하는 상황
  • @Version으로 낙관적 잠금을 쓰는 엔티티에서 신규/업데이트가 의도대로 갈리지 않는 디버깅

본인 경험에 녹이는 힌트

대량 저장 API에서 SQL 로그를 보고 "왜 select가 같이 나오지"를 추적해본 적이 있다면 isNew/merge 경로 이야기로 연결할 수 있다

UUID PK 도메인에서 Persistable을 구현해 persist 경로로 강제한 경험이 있다면 그대로 답변 후크가 된다

ID 생성 전략을 IDENTITY에서 직접 할당 방식으로 바꾸며 저장 성능이 달라진 경험을 정량으로 말할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1persist와 merge의 SQL 차이는 무엇인가요
Q2직접 ID 할당 시 isNew 구현에서 주의할 점은 무엇인가요
Q3@Version 필드가 신규 판별에 미치는 영향은 무엇인가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문