JaeniWorld

[JPA] 영속성 컨텍스트(Persistence Context) 본문

프로그래밍/JPA

[JPA] 영속성 컨텍스트(Persistence Context)

jaeni 2021. 1. 13. 11:12
반응형

영속성 컨텍스트(Persistence Context)

Persistence Context는 엔티티를 영구저장하는 환경, Entity Manger로 엔티티를 저장하면 엔티티매니저는 엔티티를 영속성 컨텍스트에 보관하고 관리함.

  1. Entity@id 어노테이션을 이용하여 엔티티를 식별함
  2. 쓰기 지연 기능이 존재하여 값을 변경하자마자 DB에 반영되지 않고 EntityManagerCommit()을 호출할 때 DB반영 == Flush
  3. 1차캐시, 동일성 보장, 변경 감지, 지연 로딩의 특징을 가짐

J2SE  환경
J2EE,  스프링 프레임워크와 같은 컨테이너 환경

스프링에서 EntityManager를 주입 받아서 쓰면, 같은 트랜잭션 범위에 있는 EntityManager는 동일 영속성 컨텍스트에 접근함.

 

 

Entity LifeCycle

  • 비영속 (new)
    persistence context
    와 관련이 없는 상태로 쉽게 말해 DB와 연관없는 순수한 객체상태
  • 영속 (Managed)
    Persistence Context
    에 저장된 상태로 EntityPersistence Context에 의해 관리됨
    EntityManager.persist(entity);하는 순간 엔티티를 영속한다.
  • 준영속(detached)
    영속성 컨텍스트에 저장되었다 분리된 상태 그리고 영속성 컨텍스트에서 지운 상태
  • 삭제(removed)
    컨텍스트와 DB 모두 삭제
// 비영속 상태

Member member = new Member();

 

EntityManager em = entityManagerFactory.createEntityManager();

em.getTransaction().begin();

 

//영속상태 (Persitencecontext가 member를 관리함)

em.persist(member);

 

//준영속(detach)

em.detach(member);

 

//객체 삭제

em.remove(member);

 

transaction.commit(); // 해당 문장을 쓰지 않으면 쿼리가 DB로 날아가지 않음.

 

참조

victorydntmd.tistory.com/207

반응형

'프로그래밍 > JPA' 카테고리의 다른 글

[JPA] Persistence context 의 특징  (0) 2021.03.09
Comments