본문 바로가기

학습 기록/스프링 부트3 백엔드 개발자 되기[자바편]

[05장.3] 2. 영속성 컨텍스트

영속성 컨텍스트란?

: 엔티티 매니저가 엔티티를 저장하는 공간

: JPA의 중요한 특징 중 하나로, 엔티티를 관리하는 가상의 공간

: 데이터베이스에서 효과적으로 데이터를 가져오고, 엔티티를 편하게 사용할 수 있도록 해줌

 

기존에는 데이터 조작을 위해 쿼리를 직접 작성해야 했지만, 현재는 스프링 부트에서 이런 쿼리를 자바 코드로 작성하고 이를 JPA가 알아서 쿼리로 변경해주고 있음

 

영속성 컨텍스트 기본 특징

1. 1차 캐시

: 엔티티를 보관하는 장소

: 트랜젝션을 시작하고 종료할 때까지만 1차가 유효

: 끄고 켤 수 있는 옵션이 아니며, 영속성 컨텍스트 자체를 1차 캐시로 봐도 무방

: 엔티티 조회시 1차 캐시에서 조회하며, 값이 없을 경우 데이터베이스에서 조회한 이후 1차 캐시에 저장한 다음 반환

 

2. 쓰기 지연

: 트랜잭션을 커밋하기 이전까지는 데이터베이스에 실제로 질의문을 보내지 않고 쿼리를 모았다가 트랜잭션을 커밋하면 모았던 쿼리를 한 번에 실행

: 적당한 묶음으로 쿼리 요청이 가능하며, 이로 인한 시스템의 부담을 줄일 수 있음

 

3. 변경 감지

: 1차 캐시에 저장된 값과 현재 엔티티의 값을 비교해 변경된 값이 있다면 변경을 감지해 데이터베이스에 자동으로 반영

 

4. 지연 로딩

: 쿼리로 요청한 데이터를 애플리케이션에 바로 로딩하는 것이 아닌 필요할 때 쿼리를 날려 데이터를 조회

- 즉시 로딩 : 쿼리를 보내 연관된 모든 데이터를 즉시 조회

 

캐시를 하거나, 자주 쓰지 않게 하거나, 변경을 자동 감지해 미리 준비하는 방법을 통해 모두 데이터베이스 접근을 최소화해 성능을 높일 수 있도록 함