
Spring Boot + JPA 환경에서 save()를 두 번 호출, 또는 save()가 내장된 다른 서비스 계층에서 중복 호출의 경우도 생깁니다. 이 두 경우 모두 NSERT 쿼리가 한 번만 실행됩니다. 이유는 JPA의 영속성 컨텍스트 때문입니다.

JPA Dirty Checking"왜 update 쿼리가 자동으로 나가지?", "save() 안 불러도 값이 바뀌네" 같은 착오를 겪기 쉽습니다. 이번 글에서는 그 이유인 더티 체킹(Dirty Checking)을 깊게 파고들어, 실무에서 자주 틀리는 사례와 성능/동작

JPA 엔티티 생명주기 완전 정리 — persist, detach, merge, remove 영속성 컨텍스트, 더티 체킹과 이어지는 개념이에요. > 트랜잭션 내에서 엔티티가 어떻게 관리되는지 이해하면 혼란이 줄어듭니다 . 엔티티 상태 4가지