코드 저장소.

Jpa - 영속성 컨텍스트 본문

웹개발/Jpa

Jpa - 영속성 컨텍스트

slown 2024. 5. 13. 23:43

목차

1.영속성 컨텍스트

2.엔티티의 생명주기

3.영속성 컨텍스트의 이점

 

1.영속성 컨텍스트

영속성 컨텍스트는 엔티티(Entity) 객체의 생명주기를 관리하는 환경입니다. 영속성 컨텍스트는 JPA가 데이터베이스와 상호작용할 때 사용되며, 엔티티 객체의 상태를 추적하고 관리합니다. 

2.엔티티의 생명주기

엔티티의 생명주기.

  • 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
  • 영속 (managed) : 영속성 컨텍스트에 관리되는 상태
  • 준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제 (removed) : 삭제된 상태

비영속

객체를 생성했지만 영속성 컨텍스트에서 관리하지 않는 상태를 의미한다.

//객체를 생성한 상태(비영속) 
Member member = new Member(); 
member.setId("member1"); 
member.setUsername("회원1");

 

영속

생성된 객체를 엔티티 매니저를 이용하여 트랜잭션 안에서 객체를 영속성 컨텍스트에 저장한 상태를 의미한다.

EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//객체를 저장한 상태(영속)
em.persist(member);

 

준영속

영속성 컨텍스트에 저장된 엔티티를 분리한 상태를 의미한다.

더 이상 영속성 컨텍스트가 엔티티를 관리하지 않는다.

//회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태 
em.detach(member);

 

삭제

 

엔티티를 영속성 컨텍스트와 DB에서 삭제한 상태를 의미한다.

//객체를 삭제한 상태(삭제) 
em.remove(member);

3.영속성 컨텍스트의 이점

  • 1차 캐시
  • 동일성(identity) 보장
  • 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)
  • 변경 감지(Dirty Checking)
  • 지연 로딩(Lazy Loading)

 

'웹개발 > Jpa' 카테고리의 다른 글

Jpa - 프록시 및 로딩전략  (0) 2024.05.29
Jpa - 값타입  (0) 2024.05.28
Jpa - 엔티티 연관관계  (0) 2024.05.25
Jpa [엔티티 매핑]  (0) 2024.05.11
Jpa 란 무엇인가??  (0) 2024.05.07