엔티티 매니저란? (Entity Manager)
데이터 베이스에 접근하기 위해 사용되는 객체 ➡️ 엔티티 매니저를 통해 DB 조회 / 등록 / 수정 / 삭제 작업 수행
엔티티 매니저 종류
- 애플리케이션에서 관리하는 엔티티 매니저
- 애플리케이션을 시작하면서 EntityManagerFactory를 초기화
- 필요할 때, Entity Manager 생성 후 사용
- 사용이 끝난 Entity Manager는 close()
- 사용이 끝난 EM은 바로바로 **close 해주지 않으면 자원 누수 발생** 가능
- 컨테이너(JEE)에서 관리하는 엔티티 매니저
- 컨테이너가 제공하는 EntityManager를 사용(@PersistenceContext)
영속성 컨텍스트(Persistence Context)
- 일종의 캐시 저장소
- 엔티티 타입, 식별자 (Key) ↔️ 객체(Value)
- Entity Manager가 Commit 시점에 영속성 컨텍스트(Persistence Context)에서 관리하고 있던 영속 객체의 변경 내역을 추척해 DB에 반영
flowchart LR
subgraph pc[Persistence Context]
a("영속 객체들")
end;
subgraph db[DataBase]
b("레코드들 ")
end;
pc --> em["Entity Manager"] --> db
- 영속 객체 : 영속성 컨텍스트에 들어있는 Entity 객체
- 엔티티 매니저를 생성할 때, 생성한 엔티티 매니저에 대한 하나의 영속성 컨텍스트가 생성됨
- 동일한 엔티티를 2번 조회할 경우,
- 첫 번째 조회 시, 조회 쿼리 실행 ➡️ 영속성 컨텍스트에 엔티티가 담김(영속 객체)
- 두 번째 조회 시, 조회 쿼리 실행 ❌ (영속성 컨텍스트에서 꺼내옴)
'JPA' 카테고리의 다른 글
JPA - 연관관계 주인(feat. mappedBy) (0) | 2023.05.19 |
---|---|
영속성 컨텍스트! (2) | 2023.05.11 |
자바의 트랜잭션 (0) | 2023.05.09 |
1. JPA의 등장 (0) | 2023.04.26 |
[JPA] N+1문제 (0) | 2023.04.18 |