본문 바로가기
JPA & Querydsl

JPA Entity의 생명주기와 영속성 컨텍스트(Persistence Context)

by 창따오 2023. 12. 4.
728x90

영속성 컨텍스트(Persistence Context)

  • JPA를 이해하는데 가장 중요한 용어
  • "Entity를 영구 저장하는 환경"이라는 뜻
  • EntityManager.persist(entity)

EntityManager와 영속성 컨텍스트

  • 영속성 컨텍스트는 논리적인 개념이다.
  • 눈에 보이지 않는다.
  • EntityManager를 통해서 영속성 컨텍스트에 접근한다.

Entity의 생명주기

영속성 컨텍스트의 이점

  • 1차 캐시 동일성(identity) 보장
  • 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)
  • 변경 감지(Dirty Checking) 지연 로딩(Lazy Loading)






    출처: 김영한님 JPA

flush란 무엇인가?

  • 영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영하는 것이다.
  • flush 발생조건
    • 변경 감지
    • 수정된 엔터티 쓰기 지연 SQL 저장소에 등록 등등
  • 영속성 컨텍스트를 flush하는 방법
    • em.flush() 직접호출
    • 트랜잭션 커밋 -> flush 자동호출
    • JPQL 쿼리 실행 -> flush 자동호출

flush에 대한 정리

  • 영속성 컨텍스트를 비우고 DB에 반영하는 것이 아니다.
  • -> 영속성 컨텍스트의 변경내용을 DB에 동기화 하는 것이다.