-
영속성 컨텍스트spring/JPA 2022. 8. 13. 03:32
-JPA를 이용하는데 가장 중요한 단어
-'엔티티를 영구 저장하는 환경' 이라는 뜻
-Entity Manager.persist(entity)
EntityManager 생성시 1:1로 context생성
생명주기
-비영속 : 영속성 컨텍스트와는 관련없는 새로운 상태
-영속 : 영속성 컨텍스트에 관리되는 상태
-준영속 : 영속성 컨텍스트에 관리되다 분리된 상태
-삭제 : 영속성 컨텍스트에서 삭제된 상태
SQL쿼리는 commit시 날라가고 persist한다고 날라가진 않음.
이점
-1차캐시
entity를 불러올 때 영속성 컨텍스트 내부의 1차캐시에 저장해서
처음 이후 사용시 SQL을 날려서 불러오지 않고 빠르게 불러온다.
-동일성 보장
쉽게 말해 같은 Entity라고 해도 ==비교시엔 false가 뜨지만
영속성 컨텍스트 내부에선 ==비교를 해도 같다고 표기해줌.
-쓰기지연
persist시 바로 DB에 쿼리를 날리는게 아니라
영속성 컨텍스트 내부의 '쓰기 지연 SQL저장소' 라는 곳에 저장이 됨.
뭔가 이점이 있는 듯
-변경감지
만약 데이터가 변경 시 JPA에서 스냅샷의 변경된 부분을 일일이 감지해내서
감지된 부분이 있으면 위에 말한 '쓰기 지연 SQL 저장소'에 update문으로 SQL 작성해줌
-지연 로딩
아직 모르겠음.