JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트이다.
영속성 컨텍스트 : 엔티티를 영구 저장하는 환경
JPA에서 persist() 메소드는 엔티티 매니저를 사용해서 영속성 컨텍스트에 저장
영속성 컨텍스트는 엔티티 매니저를 생성할때 하나 만들어지게 된다
앤티티 매니저는 영속성 컨텍스트를 생성 및 관리하는 역할을 하게된다.
Entity는 4가지 State를 갖고 있다.
- 비영속(new/transient)
- 엔티티 객체를 생성
- DB와 연관되어있지 않음
- 영속(managed)
- 엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트에 저장
- 영속성 컨텍스트에서 관리되는 엔티티를 영속 상태라고 부름
- 준영속(detached)
- 엔티티를 영속성 컨텍스트가 관리하지 않는 상태
- 삭제(removed)
- 영속성 컨텍스트와 데이터베이스에서 삭제된 상태
영속성 상태의 특징
- 영속성 컨텍스트와 식별자 값
- 앤티티를 식별자 값으로 구분한다 -> 영속 상태는 식별자 값을 항상 같고 있어야 한다
- 영속성 컨텍스트와 데이터베이스 저장
- JPA는 보통 트랙젝션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 데이터를 반영하게 되는데 이를 flush라고 한다
- 영속성 컨텍스트에 장점
- 1차 캐시보장
- 동일성 보장
- 트랙잭션을 지원하는 쓰기 delay
- 변경 감지
- 지연 로딩
반응형
'Framework > Spring' 카테고리의 다른 글
[Spring] Open API 활용하기 (0) | 2023.12.15 |
---|---|
[Spring] Rest Doc 활용하기 (0) | 2023.12.13 |
[Spring] Spring MVC 패턴의 LifeCycle (0) | 2023.10.26 |
[Spring] Gradle 1편 (0) | 2022.04.04 |
[Spring] JPA-ORM (0) | 2022.03.10 |