영속성 컨텍스트(PersistenceContext) : 엔티티를 영구 저장하는 환경
엔티티 생명주기
관계없는 새로운
상태컨텍스트에 관리
되는 상태분리
된 상태삭제
된 상태//객체를 생성한 상태(비영속)
Member member = new Member();
member.setId("member1");
////
EntityManager em = emf.createEntityManager();
em.getTransation().begin();
//객체를 저장한 상태(영속) -> 영속성 컨텍스트에 저장되었을 뿐 DB에 저장된게 아님
em.persist(member);
//
//컨텍스트에서 분리
em.detach(member);
//객체를 삭제
em.remove(member);
1차 캐시
동일성 보장
트랜잭션을 지원하는 쓰기 지연
변경 감지(더티 체킹)
set함수로 값 변경 시 데이터 Update 가능
JPA는 commit 시점에 flush가 발생하면서 엔티티와 스냅샷(가져온 시점의 값)을 비교 후 update 쿼리를 쓰기 지연 sql 저장소에 보냄
영속성 컨텍스트의 변경 내용을 데이터베이스에 반영
기능
변경 감지
수정된 엔티티 쓰기 지연 SQL 저장소 등록
쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제)