-
영속성 컨텍스트(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 을 하게 된다.
-
그로 인해 수많은 쿼리가 발생할 수도 있으니 조심해야 한다.
'Spring > Spring Data JPA' 카테고리의 다른 글
Spring Data JPA 2. null 처리 관련 애노테이션 (31) 2020.06.01 JPA의 Dialect(방언) (0) 2020.05.25 Spring Data JPA 1. 상속구조와 주요 인터페이스 (0) 2020.05.12 하이버네이트 ORM User guide 1 (0) 2020.05.11 JPA의 도메인 클래스 컨버터 자동 등록 (0) 2020.04.25 -