JPA의 영속성 컨텍스트는 엔티티를 관리하는 메모리 공간입니다. 영속성 컨텍스트는 EntityManager를 통해 접근하며, 애플리케이션과 DB 사이에서 엔티티의 생명주기를 관리합니다.

엔티티 생명주기

비영속(New)

영속성 컨텍스트와 관계없는 새로운 객체

Member member = new Member();

영속(Managed)

영속성 컨텍스트에서 관리되는 상태

em.persist(member);
Member found = em.find(Member.class, 1L);

준영속(Detached)

영속성 컨텍스트에서 분리된 상태

em.detach(member);
em.clear();

삭제(Removed)

삭제 예정 상태

em.remove(member);

핵심 기능

1차 캐시

같은 트랜잭션에서 동일 엔티티 조회 시 캐시에서 반환. DB 접근 최소화.

동일성 보장

같은 식별자로 조회한 엔티티는 == 비교 시 true.

쓰기 지연

SQL을 모아뒀다가 커밋 시점에 한번에 전송.

변경 감지(Dirty Checking)

영속 엔티티의 변경사항을 자동 감지해 UPDATE SQL 생성.

Member member = em.find(Member.class, 1L);
member.setName("변경"); // 자동으로 UPDATE SQL 생성됨