OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
4
작성자 없음
0 câu hỏi đã được viết
안녕하세요.
OrderServiceTest에 상문주문 메서드 실행 할때 쿼리를 봤는데 item에 update 쿼리가 발생했더라고요. 제가 궁금한게 item, member, order.. 등등 persist 했고 중간에 flush를 할만한 jpql이라던가 모든 엔티티 pk가 identity로 되어 있지 않은데 item에 update가 왜 발생한건가요? 엔티티를 persist 하고 flush 전에 변경 감지 set으로 수정하면 insert -> update가 나가는건가요? insert만 나가는거 아닌가요?
감사합니다.

Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. oniic님께서 질문하신 내용에 대해 답변 드리겠습니다.
JPA를 사용할 때, persist 메서드를 호출하면 엔티티는 영속성 컨텍스트에 저장됩니다. 이 시점에서는 아직 데이터베이스에 쿼리가 나가지 않으며, 보통 트랜잭션이 끝날 때 flush 될 때까지 대기합니다. flush 시점에는 영속성 컨텍스트에 저장된 것이 데이터베이스에 반영되죠.
그렇다면 insert 이후 update가 발생하는 이유는 무엇일까요? 이 문제는 주로 JPA의 “변경 감지(Dirty Checking)” 때문입니다. 엔티티가 영속성 컨텍스트에 등록된 다음, 영속성 컨텍스트에서 엔티티 객체의 상태를 감시하며, 데이터가 변경되면 트랜잭션이 commit(플러시 시점)될 때 update 쿼리가 추가로 나갈 수 있습니다.
가능한 시나리오:
persist후에 엔티티 객체의 값을setter메서드를 통해 변경한 경우: 변경된 내용을 반영하기 위해 추가적인update쿼리가 발생합니다.
- 혹은 다른 로직에서 이러한 변경 감지가 이루어진 경우.
위 예시는 코드 상에서 조회 후 객체의 값을 수정하는 부분이 있는지 확인해 보시고, 필요한 경우 debug를 통해 실시간 객체 상태 변화를 추적해 보시는 게 도움이 될 수 있습니다.
관련해서 설명된 답변이 있었던 URLs를 첨부드리자면:
- 안녕하세요 항상 좋은 강의 감사드립니다! (JPA 영속성 컨텍스트 관련) - 영속성 컨텍스트와 쿼리 발생 타이밍에 대한 설명.
- save하고 update할때 혼란이 있습니다 - 변경 감지와 관련된 쿼리 발생에 대한 질문.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
sdk 설정 오류
0
57
2
오탈자 - @Transactional
0
57
1
src/test/resources 테스트 경로 문제
0
52
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
66
1
MemberRepositoryTest 실행오류
0
82
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
185
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
146
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
53
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
73
1
기본 생성자
0
62
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
168
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
117
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
121
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
115
1
24분 27초 연관관계 편의 메서드 위치
0
114
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
110
2
빌드 툴, Gradle
0
60
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
78
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
74
1
주문 목록 조회 fetch join 질문드립니다
0
84
1
dirty checking 질문드립니다.
0
84
1
동시성 관련 질문입니다
0
76
1

