JPA/JPA

영속성 컨텍스트

lovineff 2020. 6. 9. 10:17

영속성 컨텍스트

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

영속성 컨테스트에 저장

EntityManager.persist(entity); // 1차 캐시에 저장, INSERT SQL 생성하여 쓰기 지연 SQL 저장소에 저장

엔티티 매니저를 통해서 영속성 컨텍스트에 접근

 

비영속

객체를 생성한 상태

Member member = new Member();

 

영속

em.persist(member);

 

준영속 상태

em.detach(member);

 

삭제

em.remove(member);

 

영속성 컨텍스트의 이점

1차 캐시

- 동일성(identity) 보장

변경 감지(Dirty Checking)

- 수정시 스냅샷을 통해 기존 엔티티와 비교하여 변경이 있는 경우 수정 쿼리 생성

지연 로딩(Lazy Loading)

flush

영속성 컨텍스트의 변경 내용을 즉시 데이터베이스에 반영

commit, query 사용시 자동 사용