← 질문 목록
#114깊이 0

같은 엔티티를 두 번 조회하면 왜 같은 객체인가?

프레임워크기초트랜잭션캐싱

답변 연습

내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요

한 영속성 컨텍스트는 엔티티 타입과 식별자별로 인스턴스를 하나만 관리한다. 이미 관리 중이면 1차 캐시에서 같은 객체를 반환한다.

  1. 코드→컨텍스트

    타입과 ID로 찾는다

  2. 컨텍스트→1차 캐시

    관리 객체를 확인한다

  3. 1차 캐시→코드

    있으면 같은 객체를 준다

  4. 컨텍스트→DB

    없으면 조회해 관리한다

JPQL은 조회 쿼리를 실행할 수 있다. 그래도 같은 식별자가 이미 관리 중이면 결과를 기존 인스턴스에 맞춰 객체 동일성을 지킨다.

이 캐시는 EntityManager 범위 안에서만 유효하다. 여러 요청이 공유하는 2차 캐시가 아니며 트랜잭션 격리도 대신하지 않는다.

clear나 detach 뒤에는 관리가 끊긴다. 긴 범위에 많은 엔티티를 쌓으면 메모리와 낡은 상태 문제가 커지므로 필요한 작업에서는 주기적으로 비워야 한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

같은 엔티티를 두 번 조회하면 왜 같은 객체인가?