[JPA] 엔티티의 생명주기 3단계

2026. 5. 10. 23:35·개발 공부/Java-Spring

엔티티(객체) 각 영속성 컨텍스트(JPA의 관리 영역)와 어떤 관계를 맺고 있느냐에 따라 상태가 나눱니다.

1. 비영속 (New / Transient)

영속성 컨텍스트와 아무런 관계가 없는 순수한 자바 객체 상태입니다.

  • 상태: 막 new 키워드로 객체를 생성한 직후입니다.
  • 특징: DB에 저장되지 않았고, JPA가 이 객체를 관리하지도 않습니다. 그냥 일반 객체일 뿐입니다.
  • 비유: 식당에 들어가기 전, 집에서 "무엇을 먹을까?" 고민하며 혼자 메뉴를 적어보는 단계입니다.
Java
Member member = new Member(); // 비영속 상태
member.setName("홍길동");

 

2. 영속 (Managed)

엔티티가 영속성 컨텍스트에 저장되어 관리받는 상태입니다.

  • 상태: em.persist(member)를 호출하거나 DB에서 조회해온 상태입니다.
  • 특징:
    • 이제부터 JPA가 이 객체의 변화를 감시합니다.
    • 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지(Dirty Checking) 같은 혜택을 누립니다.2. 영속 (Managed)
      • 상태: em.persist(member)를 호출하거나 DB에서 조회해온 상태입니다.
      • 특징:
        • 이제부터 JPA가 이 객체의 변화를 감시합니다.
        • 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지(Dirty Checking) 같은 혜택을 누립니다.
    • 엔티티가 영속성 컨텍스트에 저장되어 관리받는 상태입니다.
    • Java
      em.persist(member); // 이제 '영속' 상태 (JPA가 관리함)​

3. 준영속 (Detached)

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

  • 상태: em.detach(member)를 호출하거나, em.clear(), em.close()로 컨테이너를 비우면 발생합니다.
  • 특징:
    • 한번은 영속 상태였기 때문에 아이디(PK) 값을 가지고 있습니다.
    • 하지만 이제 JPA가 관리하지 않으므로, 값을 수정해도 DB에 반영되지 않습니다.
Java
 
em.detach(member); // 영속성 컨텍스트에서 분리 (준영속 상태)

 

'개발 공부 > Java-Spring' 카테고리의 다른 글

스프링 부트 6개 도메인 통합 테스트 구축기: 인프라 격리부터 영속성 타이밍 버그 검거까지  (0) 2026.05.27
[Java] final, static, static final 차이점 완벽 정리  (0) 2026.05.09
Spring의 핵심, IoC와 DI: 제어의 역전과 의존성 주입 완벽 가이드  (0) 2026.01.23
자바 접근 제어자및 스프링부트에서 사용예시  (0) 2026.01.20
[JPA] N+1 문제, 원인과 결과로 완벽하게 이해하기  (0) 2026.01.20
'개발 공부/Java-Spring' 카테고리의 다른 글
  • 스프링 부트 6개 도메인 통합 테스트 구축기: 인프라 격리부터 영속성 타이밍 버그 검거까지
  • [Java] final, static, static final 차이점 완벽 정리
  • Spring의 핵심, IoC와 DI: 제어의 역전과 의존성 주입 완벽 가이드
  • 자바 접근 제어자및 스프링부트에서 사용예시
cookiboii
cookiboii
초보 개발자입니다.
  • cookiboii
    Just Do it
    cookiboii
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • 잡소리 (2)
      • vscode꾸미기 (1)
      • 회사공부 (0)
      • 면접복기 (5)
      • 개발취직관련 좋은 글귀 (12)
      • 개발 공부 (58)
        • 백준 (0)
        • web (3)
        • js&ts&react (4)
        • Java-Spring (18)
        • 개발책 리뷰 (0)
        • c++ (0)
        • git (0)
        • code up 문제 (5)
        • 네트워크 (5)
        • 자료구조&알고리즘 (2)
        • ci,cd (1)
        • 프로젝트 (9)
        • sql (4)
        • 컴퓨터구조 (1)
        • 운영체제 (5)
        • python (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

    • 네이버블로그
    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    사이드프로젝트 #토이프로젝트 #개발 #개발자
    개발
    js #web
    Java
    코딩
    코드업 #코딩문제
    라이엇 #api #롤api
    자바 #Java #JPA #개발자 #개발 #초보
    프로그래밍
    springai #spring #java
    js #제이쿼리 #비동기통신 #코딩 #프로그래밍
    자바
    롤 #리그오브레전드
    JVM
    js #예약어 #자바스크랩트
    ci #개발 #git
    포켓몬 #vscode #vscode꾸미기 #개발
    깃허브 #깃 #커밋
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
cookiboii
[JPA] 엔티티의 생명주기 3단계
상단으로

티스토리툴바