-
[Spring] 연속성 컨텍스트Spring 2025. 5. 7. 16:01#영속성 컨텍스트
💡 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 - EntityManager.persist(entity)