
영속성 컨텍스트란?
ORM : 객체와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술
JPA에서는 테이블과 매핑되는 객체 정보를 영속성 컨텍스틀 통해 어플리케이션 내에서 오래 지속되도록 보관

비영속(new/transiet) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
영속(managed) : 영속성 컨텍스트에 관리되는 상태
준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
삭제(remove) : 삭제된 상태


em.detach(member); //준영속
em.remove(member); //삭제
영속성 상태의 장점
1차 캐시
동일성 보장
트랜잭션을 지원하는 쓰기 지연
변경 감지
지연 로딩
영속성 컨텍스트

1차 캐시 영역과 쓰기 지연 SQL 저장소 영역
JPA API 중 엔티티 정보를 영속성 컨텍스트에 저장하는 API를 사용하면, 1차 캐시에 저장된다.
영속성 컨텍스트에서의 조회

find 메서드를 사용하면 1차 캐시에 해당 엔티티가 존재하는지 먼저 탐색한다.
1차 캐시에 존재하지 않으면, 데이터베이스에서 조회한 뒤, 1차 캐시에 저장한다.
Member member1 = em.find(Member.class, "member1")
Member member2 = em.find(Member.class, "member1")