엔티티매니저
- 엔티티 매니저는 엔티티를 저장하고 수정하고 삭제하고 조회하는 등 엔티티와 관련된 모든 일을 처리한다.
- 개발자 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다.
- 데이터 베이스를 하나만 사용하는 애플리케이션을 일반적으로 엔티티매니저팩토리를 하나만 생성한다.
- 엔티티매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성문제가 발생하므로 스레드간에 절대 공유하면 안된다.
영속성 컨텍스트
- 엔티티를 영구 저장하는 환경
- 엔티티매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.
- em.persist() 메서드 또는 em.find()를 통해 영속상태(영속성 컨텍스트에 의해 관리되는 상태)로 만듬
- em.datach(), em.close(), em.close()를 통해 영속성 컨텍스트를 초기화하면 준영속 상태
- em.remove()는 삭제한 상태
영속성 컨텍스트 특징
- 식별자 값으로 매핑함
- 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 저장된 엔티티를 플러시함
엔티티조회