
클라이언트의 요청이 올 때마다, EntityManagerFactory는 EntityManager를 생성한다.
생성된 EntityManager는 내부적으로 커넥션을 사용해 데이터베이스를 접근할 수 있다.
EntityManagerFactory
EntityManager
Entity를 영구히 저장하는 환경이라는 뜻이다.
EntityManger.persist(member);
이 코드는 member를 DB에 바로 저장하는 것이 아니라, EntityManager를 사용해 member Entity를 영속성 컨텍스트에 저장하는 코드이다.
영속성 컨텍스트는 EntityManger를 생성할 때 하나만 만들어진다. EntityManager를 통해 영속성 컨텍스트에 접근할 수 있고, 영속성 컨텍스트를 관리할 수 있다.
엔티티의 4가지 상태
엔티티 객체가 생성된 순수 객체 상태로,
영속성 컨텍스트나 DB와는 전혀 관계가 없는 상태

엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장하면, 영속성 컨텍스트가 엔티티를 관리하므로 영속 상태라고 한다.

EntityManger.persist(member)
위 코드를 수행하면 member 엔티티는 영속성 컨텍스트에 의해 관리되는 영속 상태가 된다.
그러나 위 코드가 수행된다고 데이터베이스에 저장되는 것은 아니다.
영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않으면 준영속 상태이다.
EntityManager.detach(member); // member 엔티티를 준영속 상태로 만든다.
EntityManager.close(); // 영속성 컨텍스트를 닫는다.
EntityManager.clear(); // 영속성 컨텍스트를 초기화한다.
엔티티를 영속성 컨텍스트와 DB에서 삭제한다.
EntityManager.remove(member);
