본문 바로가기

Back-end/JPA

[JPA] JPA 영속성 컨텍스트의 이점 5가지

영속성 컨텍스트(Persistence Context)


Entity를 영구적으로 저장하는 환경
을 의미합니다.

 

JPA에서 가장 중요한 용어이고 논리적인 개념입니다.

영속성 컨텍스트EntityManager를 생성할 때 함께 만들어지고 EntityManager를 통해 접근하고 관리할 수 있습니다.

 

영속성 컨텍스트는 엔티티를 식별자 값으로 구분하기 때문에 영속 상태의 엔티티반드시 식별자값이 존재해야하고 없다면 예외가 발생합니다.

영속성 컨텍스트에 엔티티를 저장하면 트랜잭션을 커밋하는 순간 데이터베이스에 반영합니다.

 

 

영속성 컨텍스트 이점

  1. 1차 캐시: 조회가 가능하며 1차 캐시에 없으면 DB에서 조회하여 1차 캐시에 올려 놓습니다.
    영속성 컨텍스트내부에 Map 형태로 된 1차 캐시를 가지고 있습니다.
    key: @Id로 선언한 필드, 데이터베이스의 기본키와 매핑
    value: 엔티티 인스턴스
  2. 동일성 보장: 동일성 비교가 가능합니다. (==)

  3. 쓰기 지연(Transaction write-behind): 트랜잭션을 지원하는 쓰기 지연이 가능하며 트탠잭션 커밋하기 전까지 SQL을 바로 보내지 않고 모아서 보낼 수 있습니다.

  4. 변경 감지(Dirty Checking): 스냅샷을 1차 캐시에 들어온 데이터를 찍습니다. commit 되는 시점Entity와 스냅샷을 비교하여 update SQL을 생성합니다.

  5. 지연 로딩: 엔티티에서 해당 엔티티를 불러올 때 그 때 SQL을 날려 해당 데이터를 가져옵니다.

'Back-end > JPA' 카테고리의 다른 글

[JPA] Fetch Type란?  (0) 2021.11.22
[JPA] N+1 문제가 발생하는 이유와 해결 방법  (0) 2021.11.22
[JPA] JPA Propagation 전파 단계  (0) 2021.11.22
[JPA] JPA를 사용하는 이유  (0) 2021.11.22
[JPA] JPA란?  (0) 2021.11.17