[JPA] 영속성 컨텍스트 (Persistence Context)

2024. 2. 5. 10:20
728x90

1. 영속성 컨텍스트

1) 영속성

: 데이터가 프로그램이 종료되고 난 뒤에도 남아있는 특성. 

- Java에서 만드는 변수와 객체는 전부 휘발성 (Heap에서 관리하다 변수가 사라질 때 객체 데이터를 삭제하게 된다)

>> 영속성이 없다!

- 파일(DB)의 형태로 저장. 서버가 종료되어도 데이터가 남아있음. > 영속성

 

2) 영속성 컨텍스트

: JPA를 사용하면 데이터베이스와 JPA 사이에 영속성 컨텍스트를 만든다. 

- Spring Boot와 데이터베이스 사이의 Entity용 가상 데이터베이스!

- 실제 영속성 컨텍스트와 소통하는 객체는 EntityManager.

>> 이를 편의성 있게 사용할 수 있도록 하는 인터페이스가 Spring Data JPA! 

 

- 1차 캐시 (First Level Cache)

: 어떤 엔티티가 작성/조회될 때 영속성 컨텍스트에서 우선적으로 관리하므로 > 실제로 데이터베이스에 접근하는 횟수를 줄일 수 있다. 

  • 방금 생성한 데이터나 여러번 조회하는 데이터의 성능 향상.
  • 조회한 엔티티의 동일성이 보장된다. (같은 객체이다/같은 Heap 상의 위치)

 

- 쓰기 지연 (Transactional Write-Behind)

: 엔티티를 저장하는 시점에 바로 INSERT문을 실행하는 것이 아니라, 순서를 기억했다가 트랜잭션이 마무리 되었을 때 한 번에 데이터베이스에 반영. >> 여러 변경사항 한번에 적용/ 입출력 작업의 횟수를 줄임.

 

- 변경 감지 (Automatic Dirty Checking)

: 트랜잭션 내부에서 엔티티가 수정되면, 개발자가 직접 수정 사항을 저장하지 않아도 트랜잭션 마무리 시점에 자동으로 차이점을 확인해서 반영해줌. (UPDATE문이 자동으로 생성된다)

 

728x90

'Programming > Spring, SpringBoot' 카테고리의 다른 글

[JPA] N+1  (0) 2024.02.05
낙관적 락 & 비관적 락  (1) 2024.02.05
@Query  (1) 2024.02.01
Relations (M : N 관계)  (1) 2024.02.01
[JPA] MappedSuperclass / JpaAuditing  (0) 2024.01.31

BELATED ARTICLES

more