Taking baby-developer steps

[JPA] 영속성 컨텍스트(Persistence Contaext)의 특징 본문

CS 지식/Web

[JPA] 영속성 컨텍스트(Persistence Contaext)의 특징

Surin Lee 2023. 12. 4. 21:07

영속성 컨텍스트

 - 엔티티를 관리하는 가상의 공간. (Spring Data JPA가 관리하는 엔티티 매니저가 엔티티를 영속성 컨텍스트에 저장한다)

 - JPA의 중요한 특징 중 하나.

- 다음 4가지의 특징을 가지고 있다.

 

1차 캐시

 영속성 컨텍스트는 내부에 1차 캐시를 가지고 있다. 캐시의 키는 엔티티의 @Id 애너테이션이 달린 기본키 역할을 하는 식별자이며 엔터티이다. 엔터티를 조회하면 1차 캐시에서 데이터를 조회하고 값이 있으면 반환한다. 값이 없는 경우엔 데이터베이스에서 조회해 1차 캐시에 저장한 후 반환한다. 1차 캐시를 이용해, 캐시된 데이터는 DB를 거치지 않아 빠르게 데이터를 조회할 수 있다.

쓰기 지연

 쓰기 지연(transational write-befind)은 트랜잭션을 커밋하기 전까지 데이터베이스에 실제 질의문을 보내지 않고, 쿼리를 모았다가 트랜잭션을 커밋하면 모았던 쿼리를 한번에 실행하는 것을 말한다. 쓰기지연을 통해, 적당한 묶음으로 쿼리를 요청해 DB 시스템의 부담을 줄일 수 있다.

변경 감지

 트랜잭션 커밋 시, 1차 캐시에 저장된 엔티티의 값과 현재 엔티티의 값을 비교해 변경사항을 감지해 데이터베이스에 자동으로 반영한다. 쓰기지연과 동일하게 적당한 묶음으로 쿼리를 요청 할 수 있게되어 DB 시스템의 부하를 줄인다.

지연 로딩

 지연 로딩(lazy loading)은 쿼리로 요청한 데이터를 애플리케이션에 바로 로딩하지 않고 필요할 때 쿼리를 날려 데이터를 조회하는 특징을 말한다. 

 

위 4가지의 특징으로 인해 JPA를 사용하면 데이터베이스로의 접근을 최소화해 성능을 높일 수 있다. 의도하지 않은 방향으로 프로그램의 결과가 만들어졌을 때, 위 특징을 이해하면 문제 상황을 이해하는데 도움이 될것이다.

 


참고문헌 : 스프링 부트3 백엔드 개발자되기

Comments