JPA PersistenceContext

skyju·2023년 1월 23일

Spring

목록 보기
4/7
  • JPA를 이해하는 데 가장 중요한 용어
  • "엔티티를 영구히 저장하는 환경" 이라는 뜻
  • EntityManager.persist(entity);

    DB에 저장하는 게 아니라 Entity를 영속성 컨텍스트에 저장하는 개념이다

ENTITY Manager? 영속성 컨텍스트

  • 영속성 컨텍스트는 논리적인 개념 (눈에 보이지 않는다)
  • 엔티티매니저를 통해서 영속성 컨텍스트에 접근

    엔티티 매니저 -> 1:1 -> PersistenceContext

엔티티의 생명주기

  • 비영속(new/transient)
    영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
  • 영속(managed)
    영속성 컨텍스트에 관리되는 상태
  • 준영속(detached)
    영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제(removed)
    삭제된 상태

PersistenceContext의 장점

  • 1차 캐시

    key가 pk, value가 객체 자체가 된다.
    1차 캐시에서의 조회 가능
    1차 캐시에 없으면 DB조회값을 1차캐시에 넣고 반환

  • 동일성(identity) 보장
  • 트랜잭션을 지원하는 쓰기 지연(transactional write-
  • 변경 감지
  • 지연 로딩
profile
https://github.com/skyju

0개의 댓글