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

Service

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

My

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

Policy

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

© 2026 그알것 · What Still Matters

질문 목록JPA
JPA

엔티티 매니저에 대해 설명해주세요

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

면접관의 질문 의도

EntityManager API를 외워 나열하는지, 상태 모델과 영속성 컨텍스트 동작까지 연결해 보는 사람인지를 가른다.

큐레이션 답변

학습 자료

EntityManager는 영속성 컨텍스트와 상호작용하며 엔티티 생명주기를 책임진다. persist·merge·remove·detach/clear/close 같은 API로 비영속·영속·준영속·삭제 상태를 전환하고, flush로 변경 내용을 DB와 동기화한다. 영속 상태 엔티티는 1차 캐시에 올라가 동일 식별자 조회를 한 번에 처리하고, 변경 감지(dirty checking)로 명시적 update 호출 없이도 SQL이 자동 생성된다. JPQL/Native Query 실행도 같은 매니저가 책임진다. 즉 _영속성 컨텍스트의 입출구_라고 보면 된다.

좋은 답변 구조

  1. 01EntityManager·영속성 컨텍스트·1차 캐시의 역할과 위치를 정의한다
  2. 02persist/merge/remove/detach/flush가 비영속·영속·준영속·삭제 상태를 어떻게 전이시키는지 단계로 설명한다
  3. 03dirty checking·트랜잭션 커밋 시 자동 flush 같은 분기 동작과 예외 케이스를 짚는다
  4. 04운영에서 "왜 update SQL이 안 나가지" 같은 디버깅 시나리오로 마무리한다

자주 실수하는 포인트

EntityManager를 단순 SQL 실행 객체로만 설명한다
영속/준영속/비영속 상태 전이를 "persist/merge/detach"로만 외운다
flush 시점과 트랜잭션 commit의 관계를 연결하지 못한다
준영속 엔티티 변경이 자동 반영되지 않는다는 사실을 모른다

실무 맥락

  • @Transactional 메서드 안에서 엔티티 필드만 바꿔도 update가 자동으로 나가는 도메인 로직
  • 영속성 컨텍스트 1차 캐시 덕에 같은 ID 조회가 SQL 한 번으로 끝나는 케이스
  • detach·merge 오용으로 데이터가 절반만 반영되는 디버깅

본인 경험에 녹이는 힌트

"update를 호출 안 했는데 SQL이 나가더라"를 dirty checking으로 설명해본 적이 있다면 그대로 답변 후크가 된다

flush 시점을 조정해 "중간 검증 쿼리"를 강제로 보낸 적이 있다면 운영 디버깅 경험으로 연결할 수 있다

OSIV on/off 환경에서 LazyInitializationException을 만난 적이 있다면 영속성 컨텍스트 범위 이야기로 자연스럽게 이어진다

커뮤니티 인기 답변

전체 0개

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

관련 꼬리 질문

Q1flush와 commit의 차이는 무엇인가요
Q2detach된 엔티티를 다시 저장할 때 주의점은 무엇인가요
Q31차 캐시가 성능에 주는 이점과 한계는 무엇인가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문