[main-project] 0316

박채은·2023년 3월 16일

Project

목록 보기
13/21

save 할 때, select 쿼리가 먼저 실행되는 이유

항상 select 문이 같이 발생하는 이유가 궁금했다.

save(S) 메소드는 엔티티에 식별자 값이 없으면(null이면) 새로운 엔티티로 판단해서 EntityManager.persist를 호출하고, 식별자 값이 있으면 이미 있는 엔티티로 판단해서 EntityManager.merge()를 호출한다.

즉 save()를 호출할 때 엔티티에 식별자 값이 있으면 내부적으로 select 쿼리가 선 실행된다.

결론

  • 식별자값이 존재 O
    • 데이터의 변경이 없는 경우: 쿼리 발생 x
    • 데이터의 변경이 있는 경우: UPDATE 쿼리 발생
  • 식별자값이 존재 X : insert 쿼리 발생

[참고]
https://programmer-chocho.tistory.com/80?category=996271


디버깅

https://jojoldu.tistory.com/149/

0개의 댓글