ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 연속성 컨텍스트
    Spring 2025. 5. 7. 16:01

    minecraft-font

    #영속성 컨텍스트 

    💡 Spring 정리: 연속성 컨텍스

    📘 개념 정리

     연속성 컨텍스트( Persistence Context )는 JPA가  관리하는 메모리 상의 저장소이다.

     이곳에 등록된 객체만 JPA가 추적, DB와 동기화 한다.

    🔄 동작 흐름

    • EntityManager.persist(entity)
      → 엔티티가 영속성 컨텍스트에 저장됨 (아직 DB INSERT는 아님)

    • EntityManager.find(id)
      → DB에서 찾기 전에 영속성 컨텍스트(1차 캐시) 먼저 확인

    • 동일한 엔티티를 다시 조회하면
      → DB가 아니라 메모리에서 꺼냄 → 성능 향상


      기능 설명
      1차 캐시 find() 하면 먼저 여기서 조회
      동일성 보장 같은 ID면 같은 객체 (== 비교 true)
      Dirty Checking 값이 바뀌면 자동으로 Update 감지
      Flush 관리 트랜잭션 커밋 전 SQL 실행 타이밍 결정
      프록시 지원 Lazy Loading은 여기 없으면 실패 (LazyInitializationException)

    ⚠️ 실수 및 주의사항

    • em.detach()나 em.clear() 호출 후 Lazy 필드 접근 시
       → 예외 발생

    • == 비교했더니 false

       → 다른 트랜잭션에서 영속성 컨텍스트가 다름

    • persist()만 했는데 DB에 insert가 안 됨
        → 커밋 or flush 필요

    ✨ 팁 & 인사이트

     - 영속성 컨텍스트는 JPA의 1차 캐시이자, 상태 추적 공간이다.
    -  여기에 들어간 객체만 DB 반영 대상이 된다.
    -  Lazy, Dirty Checking, flush 전부 여기서 출발한다.

     

    'Spring' 카테고리의 다른 글

    [Spring] Flush 시점  (0) 2025.05.07
    [Spring] JPA Entity 생명주기 4단계  (0) 2025.05.07
    [Spring] Convert VS Formatter  (1) 2025.04.18
    [Spring] Spring Formatter  (0) 2025.04.18
    [Spring] Formatter  (0) 2025.04.18
Designed by Tistory.