[TIL] JPA 영속성 관리

정석·2024년 8월 27일

TIL

목록 보기
28/40
post-thumbnail

영속성 컨텍스트

  • EntityManagerFactory 에서 EntityManager 을 각 요청마다 배치한다.
  • EntityMangaer를 이용해 DB와 연결을 하는데 아래와 같은 특징들이 존재한다.
  1. 영속상태

    entityManager.persist(member)

persist 값에 저장할 객체를 넣게 되면 영속상태가 되는데 이는 영속성 콘텍스트 내에 1차 캐시에 저장시킨다. (DB 아님)

  1. 준영속상태

    em.detach(member)

캐시 내에서 해당 객체를 제거한다. (DB에서 삭제 하는 것이 아님)

  1. 쓰기 지연

    entityManager.persist(member);
    entityManager.persist(member2);

위와 같이 실행했을 때 쿼리문은 한 번만 실행된다.

  1. 변경 감지
    영속성 컨텍스트 내의 1차 캐시 안에 있는 값이 변경되었다면 알아서 update 쿼리를 실행한다.

  2. flush
    쿼리문이 실행되는 명령어로 컨텍스트 내 1차 캐시의 내용을 DB 와 동기화시킨다.
    보통 commit 시 또는 JPQL 쿼리 실행 시 바로 실행된다.
    해당 명령어가 호출 되더라도 캐시가 비워지지 않는다.

0개의 댓글