JPA에서 가장 중요한 2가지#
- ORM, 영속성 컨텍스트
영속성 컨텍스트란?#
Entity를 영구 저장하는 환경엔티티 객체의 생명주기 관리, 캐싱, 트랜잭션 처리 등을 담당하는 핵심 컴포넌트
이점#
- 1차캐시, 동일성보장, 변경 감지(dirty checking), 지연 로딩(lazy loading) 등
엔티티의 생명주기#
- 비영속
new(전혀 관계가 없음) - 영속
managed(관리되는 상태) - 준영속
detached(저장되었다가 분리된 상태 ) - 삭제
removed(삭제된 상태)
flush#
저장
em.persist(entity)
flush
em.flush()가 호출되면 , SQL 저장소에 있던 SQL 들을 DB로 보냄 커밋시 자동호출flush()를 호출해서, 즉시 보낼수도 있음
- 기본 설정으로는, 커밋 또는
JPQL이 실행되면flush()가 실행됨 - 영속성 컨텍스트를 비우는게 아니라, 변경 내용을 데이터베이스에 동기화하는것
Dirty Checking#
1차 캐시에 있는 스냅샷과 엔티티를 배교해서, 변경사항이 있으면
flush()할때 DB에 보냄


