← 질문 목록
#135깊이 0

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

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

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

  1. 코드컨텍스트

    타입과 ID로 찾는다

  2. 컨텍스트1차 캐시

    관리 객체를 확인한다

  3. 1차 캐시코드

    있으면 같은 객체를 준다

  4. 컨텍스트DB

    없으면 조회해 관리한다

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

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

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

추천 꼬리질문

0/300

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

관련 질문

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