[JPA] 플러시(FLUSH)

Noah-wilson·2024년 12월 26일

JPA

목록 보기
5/10

플러시(FLUSH)란?

영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것이다.

변경 감지(Dirty Checking), 수정된 엔티티 쓰기 지연 SQL 저장소에 등록,쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송할때 플러시가 발생한다.

영속성 컨텍스트를 플러시하는 방법

  • em.flush() - 직접 호출
  • 트랜잭션 커밋 - 플러시 자동 호출
  • JPQL 쿼리 실행 - 플러시 자동 호출

JPQL 쿼리 실행시 플러시가 자동 으로 호출되는 이유?

em.persist(member1);
em.persist(member2);

List<Member> members=em.createQuery("select m from Member m", Member.class).getResultList();

위 코드와 같은 상황이 있다고 가정하면,
DB에 member1과 member2가 반영되지 않았기 때문에 SELECT SQL을 실행하면 member1,2를 조회할 수 없기 때문에 JPA는 이를 해결하기 위해
JPQL QEURY를 실행할때는 무조건 플러시가 자동으로 호출된다.

0개의 댓글