엔티티 매니저는 엔티티의 상태를 변경하고, 영속성 컨텍스트와 상호작용함으로써 영속 로직을 수행하는 역할을 가지고 있습니다.
+) 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로 1차 캐싱, 쓰기 지연, 변경 감지를 통해 영속 로직을 효율적으로 할 수 있게 해줍니다. 이런 효율적인 영속 로직 수행을 위해서 엔티티는 영속성 컨텍스트에 관리되어야 합니다. 이러한 작업을 도와주는 것이 엔티티 매니저입니다. → 엔티티 매니저는 엔티티가 영속성 컨텍스트에서 효율적으로 관리되도록 도와주는 것이다.
조금 더 구체적으로 엔티티 매니저의 역할을 설명해주세요.
엔티티는 영속성 컨텍스트와 관련하여 비영속, 영속, 준영속, 삭제 4가지 상태를 가질 수 있습니다. 엔티티 매니저는 persist, merge, remove, close 메서드를 이용하여 엔티티의 상태를 변경할 수 있습니다. 또한, 엔티티 매니저는 영속성 컨텍스트의 1차 캐시로부터 엔티티를 조회할 수 있으며, 쓰기 지연 저장소에 있는 쿼리들을 flush하여 DB와 동기화시킬 수 있습니다. 또한 JPQL이나 Native Query를 이용해 직접 DB로부터 데이터를 불러올 수 있습니다.
엔티티의 각 상태에 대해서 설명해주세요.
- 비영속 상태
- 엔티티 객체가 새로 생성되었지만, 아직 영속성 컨텍스트와 연관되지 않은 상태입니다. 이 상태에서는 데이터베이스와 전혀 관련이 없으며, 엔티티 객체는 메모리 상에만 존재합니다.
- 영속 상태
- 엔티티 객체가 영속성 컨텍스트에 관리되고 있는 상태입니다. 이 상태에서는 엔티티의 변경 사항이 자동으로 데이터베이스에 반영됩니다.
- 준영속 상태
- 엔티티 객체가 한 번 영속성 컨텍스트에 의해 관리되었지만, 현재는 영속성 컨텍스트와 분리된 상태입니다. 이 상태에서는 엔티티 객체의 변경 사항이 더 이상 데이터베이스에 반영되지 않습니다. 영속성 컨텍스트 종료, 트랜잭션 종료 등으로도 준영속 상태로 전환됩니다.
- 삭제 상태
- 엔티티 객체가 영속성 컨텍스트에서 제거된 상태입니다. 이 상태에서는 엔티티 객체가 데이터베이스에서 삭제됩니다.
참고
기술 면접 구독 서비스 - 매일메일 https://www.maeil-mail.kr/
'자잘한 cs' 카테고리의 다른 글
JPA의 N+1 문제에 대해서 설명해주세요. (0) | 2024.11.22 |
---|---|
JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요? (0) | 2024.11.18 |
Redis가 빠른 이유 (0) | 2024.06.10 |
프록시 패턴이란? (0) | 2024.05.22 |
reverse proxy란? (0) | 2024.05.10 |