📖본 포스팅은 '자바 표준 ORM 기술 JPA - 김영한'님의 책을 보고 작성되었습니다.
목차
1. 영속성 컨텍스트란?
2. 엔티티의 생명주기
3. 영속성 컨텍스트 특징
영속성 컨텍스트란?
- 엔티티를 영구 저장하는 환경으로 데이터베이스와는 다른 개념이다.
- 엔티티 매니저로 엔티티를 저장, 조회하게 되면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.
- 정확하게 표현하면 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다고 해야 한다.
- 논리적인 개념으로 눈에 보이지 않는다.
- 엔티티 매니저를 생성할 때 하나 만들어진다. (여러 엔티티가 같은 영속선 컨텍스트에 접근할 수도 있다)
- 엔티티 매니저를 통해 접근하고 관리할 수 있다.
엔티티의 생명주기
엔티티에는 4가지의 상태가 존재한다.
- 비영속
- 영속성 컨텍스트와 관련 없는 상태
- 영속
- 영속성 컨텍스트에 저장된 상태
- 준영속
- 영속성 컨텍스트에 저장되었다가 분리된 상태
- close( ) 하거나 clear( )하거나 영속성 컨텍스트를 초기화 한 경우 준영속에 해당한다.
- 삭제
- 삭제된 상태(데이터베이스와 영속성 컨텍스트에서 삭제)
엔티티 생명주기 그림
영속성 컨텍스트의 특징
- 영속성 컨텍스트와 식별자 값
- 엔티티를 식별자 값으로 구분한다.
- 영속 상태는 반드시 식별자 값이 있어야 한다.(없으면 예외 발생)
- 영속성 컨텍스트와 데이터베이스 저장
- 영속성 컨텍스트에 엔티티에 새로 저장한 것을 commit했을 때 JPA는 데이터베이스로 반영한다.
- 이를 플러시flush라 한다.
- 영속성 컨텍스트에 엔티티에 새로 저장한 것을 commit했을 때 JPA는 데이터베이스로 반영한다.
- 영속성 컨텍스트가 엔티티를 관리할 때의 장점
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지
- 지연 로딩
'Back-End > JPA(자바 ORM 표준 기술)' 카테고리의 다른 글
[JPA][엔티티 매핑] - 엔티티 매핑 (0) | 2022.06.02 |
---|---|
[JPA][영속성 관리] - CURD로 알아보는 영속성 컨텍스트의 필요성과 이점 (0) | 2022.05.26 |
[JPA][영속성 관리] - 엔티티 매니저 팩토리와 엔티티 매니저 (0) | 2022.05.26 |
[JPA][JPA 시작] - JPA 애플리케이션 개발 시작 (0) | 2022.05.26 |
[JPA][JPA 시작] - 객체 매핑 (0) | 2022.05.25 |