ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 영속성 컨텍스트
    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 작성해줌

    -지연 로딩

    아직 모르겠음.

    'spring > JPA' 카테고리의 다른 글

    준영속 상태  (0) 2022.08.13
    flush()  (0) 2022.08.13
Designed by Tistory.