Cộng đồng Hỏi & Đáp của Inflearn
업데이트 쿼리가 마지막에 나가는 이유를 모르겠습니다.
Viết
·
243
1
이 사진처럼 코드를 작성하면 INSERT 쿼리만 나가는데요 !!
이 코드로 하면 INSERT쿼리후
orderItem 테이블에 업데이트 쿼리가 마지막에 나가더라구요
변경감지가 일어났다고 하기엔
persist하기전에 다 연관관계를 잡아뒀는데
왜 업데이트 쿼리가 나가는지 이해가 가질 않습니다.
JPAjava
Câu trả lời 1
0
OrderItem이 영속화되는 시점에 Item은 비영속 상태이기 때문입니다.
미리 setItem은 해두혔어도 item 객체의 고유식별자가 없기 때문에 해당 시점에 영속성컨텍스트에 관리를 해줄 수 가 없습니다.
추후 em.persist(item)을 하게 되면 비로소 item이 영속상태가 되고 변경감지가 일어납니다.






그럼 orderItem을 persist 할 시점에 orderItem은 영속화 되었지만 안에 객체에 item참조변수값이 비어있는상태가 되고
추후 item을 영속화 하면 그때서야 orderItem에 item참조변수값이 변경이 되어
commit을 통해 flush가 발생했을때 영속컨텍스트에 있는 orderItem의 최초의 값(스냅샵)과 마지막으로 업데이트된 값이 달라서 변경감지가 일어나기때문에 업데이트 쿼리가 나간다는 말씀이시죠?