- 영속성 컨텍스트란?
- 엔티티 매니저
- 엔티티 생명주기
- 영속성 컨텍스트의 이점
엔티티를 영구 저장하는 환경
영속성 컨텍스트를 관리하는 클래스
EntityManagerFactory
에서 여러 EntityManager 생성EntityManagerFactory
생성 비용이 크기 때문에EntityManagerFactory
사용하도록 관리 필요영속
엔티티가 영속성 컨텍스트에 관리되는 상태
비영속
엔티티가 영속성 컨텍스트와 관계없는 상태 (새로이 생성된 엔티티)
준영속
영속성 컨텍스트에 속했다가 분리된 상태
삭제
영속성 컨텍스트 및 실제 DB에서 삭제
// 엔티티 매니저 생성
EntityManager em = entityManagerFactory.createEntityManager();
// 엔티티 생성. 비영속 상태
Member member = new Member("박경준");
// 영속 상태
em.persist(member);
// 준영속 상태
em.detach(member);
// 삭제 상태
em.remove(member);
1차 캐시
영속성 컨텍스트에 관리되는 엔티티를 조회할 때 새로 쿼리를 만들지 않고 캐시에서 조회함
동일성 보장
트랜잭션을 지원하는 쓰기 지연
트랜잭션 단위로 쿼리문을 모아서 한번에 전송.
네트워크 연결을 최소화할 수 있음
변경 감지
엔티티 값의 변경을 추적하고, 자동으로 update 쿼리를 생성함
지연 로딩