ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JPA flush()와 clear()
    JPA 2021. 12. 27. 17:41

    flush()와 clear()

    JPA의 EntityManager는 persist, flush, clear 
    세가지 동작이 있는데 각각,
    persist(영속성 컨텍스트에 저장)
    flush()(영속성 컨텍스트에서 데이터를 DB까지 접근 
    시키지만 commit은 하지 않음)
    clear()(영속성 컨텍스트 안을 모두 지움)
    와 같은 기능을 한다. 

    DB 쿼리 문을 확인하고 싶을 때

    flush와 clear를 선언해줘야 하는데, 그 이유는
    flush로 DB에 접근하고 clear를 시켜줌으로써 영속성 컨텍스트를 비운다.
    영속성 컨텍스트가 비었으므로 JPA는 DB에서 정보를 가져올 수 밖에 없다.
    이를 이용해서 DB에서 날라오는 쿼리문을 확인할 수 있게 되는 것이다.
    JPA 특성상 바로 DB에 접근하지 않고 영속성 컨텍스트를
    캐시로 만들고, 쓰기 지연 상태로 저장한 뒤 한번에 commit 하는데
    이 과정이 DB에 직접 접근하지 않게 만든다. 따라서, 
    flush와 clear를 선언해줘서 DB에 직접 접근하도록 설정하는것이다.

    'JPA' 카테고리의 다른 글

    save  (0) 2023.01.30
    JPA @Transactional과 @Rollback  (0) 2022.01.04
    JPA 변경 감지와 병합(merge)  (0) 2021.12.22
    JPA를 이용한 동적 쿼리 선언  (0) 2021.12.20
Designed by Tistory.