엔티티를 영구 저장하는 환경이라는 뜻이며 App과 DB 사이에 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다.
엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.
영속성 컨텍스트는 엔티티를 Key-Value 형태로 저장하는 저장소이며 엔티티 매니저를 생성할 때 같이 하나 생성된다.
엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있고 관리할 수 있다.
엔티티 매니저를 생성할 수 있는 기능을 제공하는 팩토리 Class
Thread-safe
하기 때문에 여러 스레드가 동시에 접근해도 안전하고 서로 다른 스레드 간 공유해서 재사용한다.
Thread-safe
는 말 그대로 여러 스레드가 한번에 접근하는 환경에서 안전하다는 뜻
Thread-safe
한 기능을 요청 스코프마다 생성하기에는 비용(시간, 메모리) 부담이 커서 App 스코프와 동일하게 싱글톤으로 생성해서 관리
엔티티 매니저는 엔티티를 저장하는 메모리 상의 데이터베이스를 관리하는 인스턴스
엔티티를 저장하고, 수정, 삭제 ,조회하는 등의 엔티티와 관련된 모든 일을 한다.
엔티티 매니저는 Thread-safe 하지 않아 동시성 문제가 발생할 수 있음