• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

플러시에 대한 정리

22.04.02 15:55 작성 조회수 181

1

안녕하세요. 맨 마지막에 플러시 정리해주실 때 설명이 헷갈려서 질문드립니다.
 
플러시는 트랜잭션 단위로 동작하기 때문에 '커밋 직전'에만 변경 내역을 DB에 날려주면 된다고 하셨는데요,
 
앞서 배운 그림 자료는
commit() 호출 -> flush() 호출 -> 쿼리가 날아감
인 것 같은데 커밋 직전에 변경 내역을 날린다는 게 무슨 의미인지 궁금합니다.

답변 2

·

답변을 작성해보세요.

3

David님의 프로필

David

2022.04.04

안녕하세요. 도던님, 공식 서포터즈 David입니다.

커밋 직전에 변경 내역을 날리는 것은 아래 이미지의 4번과 5번에 해당하는 말입니다.

아래를 보시면 아시겠지만 애플리케이션 내부에서 flush(), commit() 메서드를 호출하는 것과 실제로 DB에 flush, commit이 진행되는 건 약간의 차이가 있습니다.

감사합니다.

0

min102님의 프로필

min102

2022.07.30

저도 이 부분을 잘 이해 못했는데 도움이 되었습니다!

  • 애플리케이션 내부 flush = entityManager.flush()

라고 인지 됩니다!

그리고 질문자께서 말씀하신대로

  • entityManager.commint() > entityManager.flush()(auto)
  • 이때 entityManager.flush()(1번)를 하게되면, 쿼리 생성 > 쓰기 지연 SQL 저장소에 쿼리 등록 > DB에 쿼리 전송(이 과정이 DB flush(4번) + DB commit(5번) 이라고 인지됩니다)

제가 이해한 바가 맞나요?