
영속성 컨텍스트 이다.엔티티 매니저를 통해 영속성 컨텍스트에 접근하게 된다.
비영속 (new/transient)영속 (managed)준영속 (detached)삭제 (deleted)// 객체 생성 (비영속)
Member member1 = new Member();
member.setId("member1");
Member member2 = new Member();
member.setId("member2");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin(); // transaction 시작
// 객체 저장 (영속)
em.persist(member1);
em.persist(member2);
// 영속성 컨텍스트에서 분리 (준영속)
em.detach(member1);
// 객체를 삭제한 상태 (삭제)
em.remove(member2);
#1 에서 JPA 의 이점에 대해서 언급했었다. 영속성 컨텍스트는 아래와 같은 이점을 제공해줄 수 있다.

em.find(member.class, "member2") find 메서드를 호출하면 JPA 는 영속성 컨텍스트 에 있는 엔티티를 먼저 조회한다.Member a = em.find(member.class, "member")
Member b = em.find(member.class, "member")
System.out.println(a==b) // true

persist() 시 SQL 은 DB에 바로 보내지지 않고 쓰기 지연 SQL 저장소에 저장되었다가 commit() 이 되는 시점에 flush 되면서 DB 로 전송된다.
영속성 컨텍스트는 1차 캐시 내에서 스냅샷과 엔티티를 비교해 변경이 감지되면 쓰기 지연 SQL 저장소에 update 쿼리를 저장해뒀다가 commit 되는 시점에 DB에 반영한다영속성 컨텍스트의 변경 내용을 DB 에 반영하는 것을 말한다.
출처