Back-End/JPA(자바 ORM 표준 기술)

[JPA][영속성 관리] - 영속성 컨텍스트

얄루몬 2022. 5. 26. 16:42

📖본 포스팅은 '자바 표준 ORM 기술 JPA - 김영한'님의 책을 보고 작성되었습니다.


목차
1. 영속성 컨텍스트란?
2. 엔티티의 생명주기
3. 영속성 컨텍스트 특징

영속성 컨텍스트란?

  • 엔티티를 영구 저장하는 환경으로 데이터베이스와는 다른 개념이다.
  • 엔티티 매니저로 엔티티를 저장, 조회하게 되면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.
  • 정확하게 표현하면 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다고 해야 한다.
  • 논리적인 개념으로 눈에 보이지 않는다.
  • 엔티티 매니저를 생성할 때 하나 만들어진다. (여러 엔티티가 같은 영속선 컨텍스트에 접근할 수도 있다)
  • 엔티티 매니저를 통해 접근하고 관리할 수 있다.

엔티티의 생명주기

엔티티에는 4가지의 상태가 존재한다.

    • 비영속
        • 영속성 컨텍스트와 관련 없는 상태
    • 영속
      • 영속성 컨텍스트에 저장된 상태

  • 준영속
    • 영속성 컨텍스트에 저장되었다가 분리된 상태
    • close( ) 하거나 clear( )하거나 영속성 컨텍스트를 초기화 한 경우 준영속에 해당한다.
  • 삭제
    • 삭제된 상태(데이터베이스와 영속성 컨텍스트에서 삭제)

엔티티 생명주기 그림

엔티티 생명주기

영속성 컨텍스트의 특징

  • 영속성 컨텍스트와 식별자 값
    • 엔티티를 식별자 값으로 구분한다.
    • 영속 상태는 반드시 식별자 값이 있어야 한다.(없으면 예외 발생)
  • 영속성 컨텍스트와 데이터베이스 저장
    • 영속성 컨텍스트에 엔티티에 새로 저장한 것을 commit했을 때 JPA는 데이터베이스로 반영한다.
      • 이를 플러시flush라 한다.
  • 영속성 컨텍스트가 엔티티를 관리할 때의 장점
    • 1차 캐시
    • 동일성 보장
    • 트랜잭션을 지원하는 쓰기 지연
    • 변경 감지
    • 지연 로딩