인프런 커뮤니티 질문&답변

도던님의 프로필 이미지
도던

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

플러시

플러시에 대한 정리

작성

·

281

1

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

답변 2

3

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

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

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

감사합니다.

0

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

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

라고 인지 됩니다!

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

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

제가 이해한 바가 맞나요?

도던님의 프로필 이미지
도던

작성한 질문수

질문하기