1) Why 영속성 컨텍스트?
- JPA를 이해하려면 영속성 컨텍스트를 이해해야 합니다.
JPA에서 가장 중요한 2가지는
(1) 객체와 관계형 데이터베이스 매핑하기
(2) 영속성 컨텍스트 입니다.
영속성 컨텍스트를 명확히 이해하면 JPA가 내부적으로 어떻게 동작하는지 이해할 수 있습니다.
2) 엔티티 매니저 팩토리와 엔티티 매니저
- JPA를 쓰게 되면 우선 엔티티 매니저 팩토리와 엔티티 매니저를 이해해야 합니다.
예를 들어, 웹 어플리케이션을 개발한다고 하면,
엔티티 매니저 팩토리를 통해서 고객의 요청이 올때마다 엔티티 매니저를 생성합니다.
엔티티 매니저는 내부적으로 데이터베이스 커넥션을 통해서 DB를 사용합니다.
3) 영속성 컨텍스트란?
- 영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어입니다.
우리말로 번역하면 '엔티티를 영구 저장하는 환경'이라는 뜻입니다.
예를 들어, 다음과 같이 엔티티를 영구 저장(=영속화)합니다.
EntityManager.persist(entity);
- 영속성 컨텍스트는 논리적인 개념이고, 눈에 보이지 않습니다.
따라서 엔티티 매니저를 통해서 영속성 컨텍스트에 접근합니다.
4) 엔티티의 생명 주기
- 엔티티의 생명 주기는 크게 4단계로 나뉩니다.
(1) 비영속(new/transient)
- 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
(2) 영속(managed)
- 영속성 컨텍스트에서 관리되는 상태
(3) 준영속(detached)
- 영속성 컨텍스트에 저장되었다가 분리된 상태
(4) 삭제(removed)
- 삭제된 상태
- 하나씩 좀 더 자세히 살펴보겠습니다.
(1) 비영속
- 비영속 상태란 객체를 생성하고, entityManager에 아무런 작업을 하지 않은 상태를 의미합니다.
(2) 영속
- 영속 상태란 객체가 영속성 컨텍스트에 저장된 상태를 의미합니다.
영속성 컨텍스트에 저장된 객체는 바로 DB에 저장되는 것이 아니라,
트랜잭션이 커밋되는 시점에 DB에 저장됩니다.
(3) 준영속 및 삭제
- 준영속 상태는 영속성 컨텍스트에서 분리된 상태를 의미하고,
삭제는 실제 DB 삭제를 요청하는 것을 의미합니다.
5) 영속성 컨텍스트의 이점
(1) 1차 캐시
(2) 동일성(identity) 보장
(3) 트랜잭션을 지원하는 쓰기 지연
(4) 변경 감지(dirty checking)
(5) 지연 로딩(lazy loading)
입니다.
각각에 대해서 구체적인 내용은 2편에서 다루도록 하겠습니다.
참고
- 김영한 자바 ORM 표준 JPA 프로그래밍
'자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
엔티티 매핑 - 객체와 테이블 매핑 & 데이터베이스 스키마 자동 생성 (0) | 2022.08.31 |
---|---|
플러시 & 준영속 상태 (0) | 2022.08.31 |
영속성 컨텍스트(2) - 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지 (0) | 2022.08.31 |
JPA 기초(2) - JPA란? (0) | 2022.08.24 |
JPA 기초(1) - SQL 중심적인 개발의 문제점 (0) | 2022.08.24 |