ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 영속성 컨텍스트(persistence context)
    Spring/Spring Data JPA 2020. 5. 24. 00:53

     

    Entity 객체의 생명주기

    • New ( 비 영속 객체 ) : Entity 객체가 DB에 반영되지 않았고, Managed 상태가 아닌 상태를 말한다.

    •  이 상태는 new 키워드를 사용해 생성한 Entity 객체를 말하고 영속화되지 않는다. 

     

    • Managed ( 영속 객체 ) : . New (비 영속 객체) 상태에서 persist 메소드를 이용해 저장한 경우이다.

     

    • Removed ( 삭제 객체 ) :  이 상태에 객체는 작업 단위가 종료되는 동시에 DB에서 삭제되므로 재사용하면 안된다.

     

    • Detached ( 준 영속 객체 ) :  이 상태는 더 이상 DB와 동기화를 보장하지 않는다.

    • 다시 Managed (영속 객체) 상태로 만들기 위한 merge 메소드가 존재한다.


     

    • 기본적으로 Open EntityManager in View 라는 필터가 스프링 부트에서 활성화 되있다.

    • JPA에 있는 엔티티매니저, 하이버네이트에 세션 등 영속성 컨텍스트로서

    • DB에서 읽어온 객체들을 관리하는 컨텍스트가 있게 된다.

     

    • 이 안에서 persistent 객체들을 관리하게 되는데 이러한 상태에 객채들은

    • 트랜잭션 안에서 객체 상태 변경을 감지하고 트랜잭션 종료시 DB에 업데이트 쿼리를 반영하게 된다.

    • 따라서 데이터를 변경해야 하는일은 트랜잭션 내에서 관리해도록 해주자.

     


     

     

    영속성 컨텍스트에 특징 ?

     

    • 기본적으로 영속성 컨텍스트가 끝나는 시점은 뷰 렌더링이 끝난 이후이다.

    • 그 뜻은 뷰를 랜더링 할때 영속성 컨텍스트를 유지하게 되고 필요한 데이터를 랜더링 하는 시점에

    • 추가로 읽어오는 Lazy Loading 을 하게 된다.

    • 그로 인해 수많은 쿼리가 발생할 수도 있으니 조심해야 한다.

Designed by Tistory.