본문 바로가기

웹 프로그래밍/JPA

JPA

영속성 컨텍스트

JPA를 이해하는데 가장 중요한 용어

엔티티를 영구 저장하는 환경이라는뜻

EntityManager를 통해 영속성 컨텍스트에 접근 가능

디비와 애플리케이션의 중간에서 중개함

 

영속성 컨텍스트의 장점

  • 1차 캐시(1차캐시에 저장돼서 같은 쿼리가 여러번 나가지 않음)
  • 동일성 보장(1차캐시에서 꺼내오기때문에 동일)
  • 트랜잭션을 지원하는 쓰기 지연(쓰기 지연 SQL에 모아두고 트랙잭션 단위에 쿼리를 한꺼번에 날림)
  • 변경 감지(Dirty Checking: 1차 캐시에 저장할때 스냅샷을 찍어놓고 트랜잭션 커밋 시점(내부에서 flush 호출)에 만약 스냅샷과 엔티티가 다르다면 쓰기 지연 SQL에 업데이트 쿼리를 추가함)
  • 지연 로딩(연관관계의 객체들은 필요할때 가져오도록함, 처음엔 프록시 객체로 끼워넣음)

 

 

변경 감지(사진)

트랜잭션 Commit 시점(JPQL 실행 시점)

1. 내부적으로 flush() 호출

2. 엔티티와 처음에 찍어둔 스냅샷 비교

3. 바꼈을 경우 쓰기 지연 SQL 저장소에 Update 쿼리 추가

4. DB에 flush(영속성 컨텍스트와 DB를 동기화 한다는 뜻)

5. 커밋 완료

 

'웹 프로그래밍 > JPA' 카테고리의 다른 글

Querydsl  (2) 2024.02.23
연관관계 편의 메서드  (0) 2024.01.15
Querydsl 중급  (0) 2023.03.22
Querydls 기본  (3) 2023.03.21
스프링 데이터 JPA  (0) 2023.03.18