인프런 커뮤니티 질문&답변

JEONG HYUN KANG님의 프로필 이미지
JEONG HYUN KANG

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 컨텍스트 2

트랜잭션 밖에서 값을 수정했는데 왜 update 쿼리가 발생할까요?

작성

·

282

0




 
위의 그림과 같이 트랜잭션을 시작하기 전에 데이터를 수정했는데 update 쿼리가 나가더라구요...
 
트랜젝션 밖에서는 값의 조회만 가능할 것 같은데 수정이 되는 이유가 궁금합니다!

답변 1

4

안녕하세요. JEONG HYUN KANG님, 공식 서포터즈 David입니다.

트랜잭션 밖에서 조회만 되는 것은 스프링의 트랜잭션 범위의 영속성 컨텍스트 전략입니다.

해당 프로젝트는 스프링 컨테이너 없이 hibernate 단독으로 사용되고 있습니다.

트랜잭션과 별개로 find할 때 1차 캐시에 저장되고 commit이 진행될 때 내부적으로 변경감지 로직이 동작합니다.

관련된 자세한 구현은 아래 메서드를 참고해주세요.

DefaultFlushEntityEventListener.dirtyCheck()

감사합니다.

JEONG HYUN KANG님의 프로필 이미지
JEONG HYUN KANG

작성한 질문수

질문하기