[영상후기] 영속성 컨텍스트와 엔티티 매니저 [ JPA (Java Persistence API) ]

박철현·2023년 4월 12일
0

영상후기

목록 보기
91/160

movie

  • 영속성 컨텍스트 : 일종의 메모리 저장소이며 엔티티 타입과 식별자를 키로 사용하는 객체의 집합

  • 엔티티 매니저 : 커밋 시점에 영속성 컨텍스트에서 관리하고 있던 영속 객체의 변경 내역을 추적하여 DB에 반영

  • 엔티티 매니저를 생성할 때 하나의 영속성 컨텍스트가 생성

    • 여러 엔티티 매니저를 생성하면 각각의 영속성 컨텍스트가 생성된다.
  • 엔티티 매니저는 동일한 식별자를 갖는 엔티티를 2번 조회하게 되면

    • 첫번째 쿼리 실행
    • 두번째 쿼리 실행x, 영속성 컨텍스트에서 가져옴
  • 엔티티매니저 : DB에 엑세스하기 위해 사용되는 객체

    • DB에 데이터를 조회, 등록, 수정, 삭제 작업 수행
  • 엔티티 매니저 종류

    • 애플리케이션 관리 엔티티 매니저 : 애플리케이션에서 직접 생성하고 종료

      • 애플리케이션 시작하면서 EntityManagerFactory를 초기화하고 필요한 상황에서 EntityManager를 생성하여 사용
      • EntityManager의 사용을 마치면 close하여 마침
      • 애플리케이션 코드에서 엔티티 매니저를 관리하기 때문에 자원 누수에 대한 문제 발생할 수 있음
    • 컨테이너에서 관리하는 엔티티 매니저

      • JEE 컨테이너에서 EntityManagerFactory와 EntityManager의 라이프사이클 관리
      • 애플리케이션 코드에서는 컨테이너가 제공하는 엔티티 매니저를 사용하면됨(별도 close 할 필요 없음)
        • 이 경우 @PersistenceContext를 사용하여 구현
      • 요즘 Spring 컨테이너를 사용해서 SpringDataJPA 사용할때 컨테이너 관리하는 엔티티매니저를 사용하고 있음
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보