EntityManagerFactory
- 만드는 비용이 상당히 큼
- 쓰레드 안전
- 애플리케이션당 하나만 만들어서 공유
EntityManager
- 만드는 비용이 거의 들지 않음
- 쓰레드 안전하지 않음
- 거의 쓰레드당 하나씩
※ EntityManager
는 데이터베이스 액세스가 필요한 시점까지 Connection
을 얻지 않는다. 보통은 Transaction이 시작할 때 획득한다.
영속성 컨텍스트
- 엔티티를 영구 저장하는 환경
- 논리적인 개념
엔티티의 생명주기
영속성 컨텍스트 특징
- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지
- 지연 로딩
플러시
- 직접 호출
- 트랜잭션 커밋 시 플러시 자동 호출
- JPQL 쿼리 실행 시 플러시 자동 호출