JPA - 영속성

Haley Young·2023년 1월 9일
0

영속성 컨텍스트 란?

- 엔티티를 영구 저장하는 환경

JPA는 영속 컨텍스트라는 1차 캐시에 값을 저장해둠

em.persist(Member);

--> 이때 바로 쿼리를 날리는 게 아니라,
영속성 컨텍스트에 저장함.

Member a = em.find(Member.class, 1L);
Member b = em.find(Member.class, 1L);

--> 쿼리는 a를 조회할 때 한번만 나간다.
a와 b는 동일한 엔티티다.

Member a = em.find(Member.class, 1L);
a.setName("new name");

--> 업데이트 쿼리 작성할 필요 없이 트랜잭션이 커밋될 때,
영속성 컨텍스트의 스냅샷을 비교하여 자동으로 값이 업데이트 된다.

Flush

  • 변경 감지 (수정된 엔티티 쓰기 지연 SQL 저장소에 등록)
  • 쓰기지연 SQL 저장소의 쿼리를 데이터 베이스에 전송
  • em.flush();
  • 트랜잭션 커밋 시
  • JPQL 쿼리 실행 시

영속성 컨텍스트를 비우지 않음
영속성 컨텍스트의 변경내용을 데이터베이스에 동기화

em.clear(); --> 영속성 컨텍스트를 완전히 초기화
em.close(); --> 영속성 컨텍스트를 종료

profile
Just keep coding🎶 Just keep coding🎵

0개의 댓글