JPA

[JPA] 영속성 컨텍스트 공부

montmer27 2026. 4. 1. 15:52

배경: 45번째줄의 Delivery.markShipping() 메서드는 Delivery 객체의 status 필드와 statusUpdatedAt 필드를 업데이트시킨다.

현재 delivery는 JPA가 관리하는 영속 상태(managed entity)이다

  • 근거: 33번째줄 findByStatusAndStatusUpdatedAtBefore 메서드

따라서 delivery.markShipping(now)로 필드만 변경해도, 트랜잭션이 커밋될 때 더티 체킹(dirty checking)에 의해 자동으로 UPDATE 쿼리가 실행된다.

앞에서 save()를 명시적으로 호출하면 merge가 실행되어 불필요한 select 쿼리가 추가로 발생할 수도 있기 때문에, 결론적으로 46번째줄의 save() 메서드 호출은 불필요하다.

'JPA' 카테고리의 다른 글

[한입지식] Flush는 언제 일어날까?  (2) 2026.04.19
[한입지식] Flush란 무엇일까?  (0) 2026.04.19