TIL

[TIL] 20240119 Spring 영속성 컨텍스트

yjyj0101 2024. 1. 19. 20:29

1. 영속성 컨텍스트 (persistence context)

Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간

객체가 생명(객체가 유지되는 시간)이나 공간(객체 의 위치)을 자유롭게 유지하고 이동할수 있는 객체를 저장

 

 

2. EntityManger Factory

  • EntityManagerFactory는 일반적으로 DB 하나에 하나만 생성되어 애플리케이션이 동작하는 동안 사용
  • 디비에 접근하는 트랜잭션이 생길 때 마다 쓰레드 별로 Entity Manager를 생성하여 영속성 컨텍스트에 접근
entityManager.persist(entity); //entity를 영속성 컨텍스트에 저장

 

3. Entity의 생명주기

출처 : https://velog.io/@seongwon97/Spring-Boot-%EC%98%81%EC%86%8D%EC%84%B1-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8Persistence-Context

 

  • 비영속(new) : 영속성 컨텍스트와는 무관한 상태
  • 영속(managed) : 영속성 컨텍스트에 저장된 상태
  • 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제(removed) : 영속성 컨텍스트에서 삭제된 상태

 

4. 1차 캐시

  • 영속성 컨텍스트 내부에 있는 캐시를 거쳐서 DB가 업데이트
  • Map에는 key는 id값, value는 해당 entity값
  • 디비 조회 횟수, '1차 캐시'를 사용해 DB row 1개 당 객체 1개가 사용되는 것을 보장
  •  @Transactional이 붙는다면 JPA는 데이터를 조회하며 cache에 저장을 한 후 다음 조회때는 같은 조회를 하지 않고 cache에 있는 값을 내보냄

 

출처 : https://dev-jwblog.tistory.com/125

'TIL' 카테고리의 다른 글

[TIL] 20240123 REST API request 방식  (0) 2024.01.23
[TIL] 20240122 http status code  (0) 2024.01.22
[TIL] 20240118 Spring Ioc, DI  (0) 2024.01.18
[TIL] 20240115 Java String 클래스  (1) 2024.01.15
[TIL] 20240112 singleton 패턴  (0) 2024.01.12