영속성 관리 - 내부 동작 방식

2025. 12. 5. 17:39·JPA

 

JPA에서 가장 중요한 2가지

- 객체와 관계형 데이터베이스 매핑

- 영속성 컨텍스트

 

 

영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻

em.persist(entity);

 

엔티티매니저와 영속성 컨텍스트

- 영속성 컨텍스트는 논리적인 개념이다.

- 눈에 보이지 않음

- 엔티티 매니저를 통해서 영속성 컨텍스트에 접근

 

엔티티의 생명주기

- 비영속 (new/transient)

영속성 컨텍스트와 전혀 관계없는 새로운 상태 : Member member = new Member();

 

- 영속 (managed)

영속성 컨텍스트에 관리되는 상태 : em.persist(member);

 

- 준영속 (detached)

영속성 컨텍스트에 저장되었다가 분리된 상태

 

- 삭제 (removed)

삭제된 상태

 

영속성 컨텍스트의 이점

- 1차 캐시

- 동일성(identity) 보장

- 트랜잭션을 지원하는 쓰기 지연

- 변경 감지 (dirty checking)

- 지연 로딩 (Lazy Loading)

 

트랜잭션을 지원하는 쓰기 지연

commit을 하면 flush 실행 (DB 반영) -> 커밋 (DB 최종 반영) / 혹은 rollback

 

변경 감지 (Dirty Checking)

영속된 엔티티의 데이터를 수정할 때 em.update(member); 등 코드를 따로 작성하지 않는 이유는?

 

스냅샷을 통해 어떤 부분이 변경되었는지 감지해서 자동으로 update sql을 쓰기 지연 SQL 저장소에 저장 -> flush 한다.

 

Flush

영속성 컨텍스트의 변경 내용을 DB에 반영 (완전히 반영되는것은 commit되는 시점이다.)

 

em.flush() - 직접 호출

트랜잭션 커밋 시점 - 플러시 자동 호출

JPQL 쿼리 실행시 - 플러시 자동 호출

 

플러시는 영속성 컨텍스트를 비우지 않는다.

영속성 컨텍스트의 변경 내용을 DB에 동기화 하는 것

트랜잭션이라는 작업 단위가 중요하다 -> 커밋 직전에만 동기화 하면 됨.

 

준영속

영속 상태인 엔티티를 영속성 컨텍스트에서 분리되었을 때를 준영속으로 봄

준영속 상태에서는 변경감지 등 영속성 컨텍스트 제공 기능 사용할 수 없음

'JPA' 카테고리의 다른 글

JPA의 값 타입  (0) 2025.12.27
프록시와 연관관계 관리  (0) 2025.12.26
고급 매핑 - 상속 관계, Mapped Superclass  (0) 2025.12.25
엔티티 매핑, 연관관계  (0) 2025.12.12
데이터 접근 기술 - JPA  (0) 2025.10.24
'JPA' 카테고리의 다른 글
  • 프록시와 연관관계 관리
  • 고급 매핑 - 상속 관계, Mapped Superclass
  • 엔티티 매핑, 연관관계
  • 데이터 접근 기술 - JPA
공부처음하는사람
공부처음하는사람
  • 공부처음하는사람
    lazzzykim
    공부처음하는사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • Kotlin (31)
      • Java (56)
      • Spring (44)
      • JPA (6)
      • Algorithm (3)
      • TroubleShooting (1)
      • 내일배움캠프 프로젝트 (14)
      • Setting (2)
      • ... (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 인기 글

  • 태그

    다형성
    빈 생명주기
    kotlin
    트랜잭션
    배열
    OCP
    제네릭
    jpa
    김영한의 실전자바
    Di
    캡슐화
    java
    내일배움캠프
    싱글톤
    언체크예외
    김영한
    예외처리
    spring
    김영한의 실전 자바
    중첩클래스
  • hELLO· Designed By정상우.v4.10.3
공부처음하는사람
영속성 관리 - 내부 동작 방식
상단으로

티스토리툴바