Challenge, and Growth ! Introduce
                                                                                                             

Welcome to my blog 🙌🏻

Total

Today

Yesterday













Library/JPA

JPA 영속성 컨텍스트란? - 생명주기

뽀시라운 2024. 11. 12. 13:55
반응형
SMALL

[목차여기]

 

 

JPA 알고오기 ⬇️

 

JPA란? (CRUD API, 상속)

[목차여기] JPA란?JPA는 Java Persistence API의 약자로, 자바의 ORM을 위한 표준 기술이다.ORM은 자바의 객체와 관계형 데이터베이스를 매핑하는 것으로 SQL문을 일일이 작성하지 않고 객체로 구현할 수

proysm.tistory.com

 

 

영속성 컨텍스트란?

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

 

애플리케이션데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다.

 

엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.

 

 

 

엔티티의 생명주기

 

 

 

비영속

엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태를 비영속(new/transient)라 한다.

Member member = new Member();

 

영속

엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트에 저장한 상태를 말하며 영속성 컨텍스트에 의해 관리된다는 뜻이다.

em.persist(member);

 

준영속

영속성 컨텍스트가 관리하던 영속 상태의 엔티티 더이상 관리하지 않으면 준영속 상태가 된다. 특정 엔티티를 준영속 상태로 만드려면 em.datach()를 호출하면 된다.

1차 캐시, 쓰기 지연, 변경 감지, 지연 로딩을 포함한 영속성 컨텍스트가 제공하는 어떠한 기능도 동작하지 않는다.

식별자 값을 가지고 있다.

// 엔티티를 영속성 컨텍스트에서 분리해 준영속 상태로 만든다. 
em.detach(member); 

// 영속성 콘텍스트를 비워도 관리되던 엔티티는 준영속 상태가 된다. 
em.claer(); 

// 영속성 콘텍스트를 종료해도 관리되던 엔티티는 준영속 상태가 된다. 
em.close();

 

삭제

엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제한다.

em.remove(member);

 

 

영속성 컨텍스트의 특징

특징

  • 엔티티 매니저를 생성할 때 하나 만들어진다.
  • 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다.
  • 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다.
  • JPA는 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터 베이스에 반영하는데 이를 flush라 한다.

 

장점

  • 1차 캐시
  • 동일성 보장
  • 트랜잭션을 지원하는 쓰기 지연
  • 변경 감지
  • 지연 로딩
반응형
LIST

'Library > JPA' 카테고리의 다른 글

JPA란? (CRUD API, 상속)  (4) 2024.01.14
loading