개발새발
JPA 영속성 컨텍스트 본문
- 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 합니다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면서 영속성컨텍스트에 엔티티를 보관하고 관리합니다
em.persist(member);
- 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미
영속성 컨텍스트의 특징
- 엔티티 매니저를 생성할 때 하나 만들어진다.
- 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다.
EntityManager
- EntityManager는 영속성 컨텍스트 내에서 Entity들을 관리하고 있다.
- EntityManager는 JPA에서 제공하는 interface로 spring bean으로 등록되어 있어 Autowired로 사용할 수 있다.
Entity의 생명주기
비영속(new/transient)
- 영속성 컨텍스트와 전혀 관계가 없는 상태이다.
- 엔티티 객체를 생성하였지만 아직 영속성 컨텍스트에 저장하지 않은 상태를 의미한다.
영속(managed)
- 영속성 컨텍스트에 저장된 상태
- 엔티티가 영속성 컨텍스트에 의해 관리된다.
- 영속 상태가 되었다고 바로 DB에 값이 저장되지 않고 트렌젝션의 커밋 시점에 영속성 컨텍스트에 있는 정보들을 DB에 쿼리로 날리게 된다.
준영속(detached)
- 영속성 컨텍스트에 저장되었다가 분리된 상태
- 엔티티를 준영속 상태로 만드려면 entityManager.detach()를 호출한다.
준영속 상태의 특징
- 1차 캐시, 쓰기 지연, 변경 감지, 지연 로딩을 포함한 영속성 컨텍스트가 제공하는 어떠한 기능도 동작하지 않는다.
- 식별자 값을 가지고 있다.
'스프링' 카테고리의 다른 글
# 스프링 컨테이너 (0) | 2022.11.04 |
---|---|
#스프링 #DI 장점 (0) | 2022.11.02 |
Spring MVC 예외처리 기법 (0) | 2022.10.26 |
서블릿(Servlet) (0) | 2022.09.11 |
#spring security (0) | 2022.08.05 |
Comments