Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발새발

JPA 영속성 컨텍스트 본문

스프링

JPA 영속성 컨텍스트

개발하는후추 2022. 10. 28. 12:04

- 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 합니다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면서 영속성컨텍스트에 엔티티를 보관하고 관리합니다

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