[JPA] 영속성 컨텍스트

재호·2022년 6월 21일
0

개요

JPA 관련 웹 애플리케이션 제작 과제를 진행하던 중 JPA 쿼리 동작 방식의 이해도가 낮아서 애플리케이션 제작에 어려움을 느끼고 이를 해결하고자 인프런에서 김영한님의 ORM 강의를 공부하며 그 내용들을 기록하고자 한다.

영속성 컨텍스트

영속성 컨텍스트는 엔티티 매니저를 통해서 접근할 수 있는 눈에 보이지 않는 논리적인 개념이다.
일반적으로 쿼리의 동작들을 컨트롤한다.

엔티티의 생명주기

엔티티는 영속성 컨텍스트에 관련해서 4가지의 생명주기를 가진다.
-비영속
-영속
-준영속
-삭제

비영속은 엔티티가 생성되었지만 영속성 컨텍스트와는 무관한 상태를 말한다

영속은 엔티티가 영속성 컨테스트에 포함되서 관리되어지는 상태를 말한다

준영속은 영속 상태의 엔티티가 영속성 컨텍스트와 분리된 상태를 말한다

삭제는 데이터베이스에서 삭제된 상태를 말한다

영속성 컨텍스트의 이점

  1. 영속성 컨텍스트에는 1차 캐시의 개념이 있고 이를 통해 동일한 쿼리가 여러번 네트워크를 타지 않아도 되게 만들며 엔티티의 동일성을 보장해준다.
  2. 또한 쓰기 지연이라는 기능을 제공하기 때문에 비슷한 쿼리들을 한번에 일정 버퍼에 모았다가 한번에 전송시켜 약간의 성능 효율을 기대할 수 있다.
  3. 그리고 더티 체킹의 기능도 있는데 1차 캐시의 스냅샷을 통해 엔티티의 수정을 감지하여 엔티티 저장 메서드를 직접 호출하지 않아도 알아서 변경 처리를 해준다.

이 모든 기능들은 객체와 ERD간의 패러다임 차이를 매우 편리하게 보완해준다.

profile
Java, Spring, SpringMVC, JPA, MyBatis

0개의 댓글