JPA - 영속성 컨택스트(비영속과 영속)

계용운·2023년 9월 16일

JPA

목록 보기
1/1

1. 엔티티 매니저 팩토리와 엔티티 매니저

JPA의 작동순서를 크게 봤을 때 다음과 같다.

  • EntityManagerFactor에 의해 EntityManager가 생성되고 EntityManager를 통해 영속성 컨텍스트에 접근한다.
    - EntityManager가 영속성 컨텍스트가 아니다!
    - 영속성 컨텍스트는 EntityManger 내부에 존재하고, EntityManager를 이용하여 영속성 컨텍스트를 관리하는 것이다.
  • 요청이 들어올 때마다 EntiryManagerFactory는 EntityManager를 생성하여 각 용청에 할당한다.

2. 영속성 컨텍스트

엔티티를 영구 저장하는 환경

  • 영속성 컨텍스트에서 관리되는 엔티티는 다음과 같은 생명주기를 갖는다.*
    비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태이다.
    영속(managed) : 영속성 컨텍스트에 관리되는 상태
    준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
    삭제(removed) : 삭제된 상태 -> 찐 삭제
비영속 상태
  • 특정 객체가 생성되었지만 영속 컨텍스트에 속해있지 않은 상태이다.*

  • 코드 상에서의 비영속

영속 상태

  • 객체가 영속성 컨텍스트에 속한(관리를 받는) 상태

  • 여기서 주의해야 할 점은 객체가 영속 상태가 되었다고 해서 현재 객체의 상태가 DB에 저장되는 것이 아니라는 것이다.

  • 트랜잭션이 종료되는 시점 즉 commit이 되는 시점에 반영이된다.

  • 코드 상에서의 비영속

  • 영속성 컨텍스트에 등록됨

출처


0개의 댓글