영속성 컨텍스트란?
- 엔티티를 영구 저장하는 환경을 말한다
- 논리적인 개념을 말한다
- 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다
- Entity Manager를 통해 영속성 컨텍스트에 엔티티를 보관하고 관리한다
- Entity Manager를 생성할 때 하나 만들어지고, Entity Manager가 종료될 때 사라진다
entityManager.persist(entity)
위와 같은 코드를 통해서 Entity를 영속성 컨텍스트에 저장한다. 해당 entity는 아직 DB에는 반영되지 않았다(트랜잭션이 끝나야 반영함)
Entity Manager란?
- EntityManagerFactory는 여러 스레드에서 동시에 접근해도 문제가 없지만, 생성하는 비용이 상당히 크다
- 요청이 올때마다 EntityManagerFactory를 통해 생성 비용이 상대적으로 적은 EntityManager를 생성한다
- EntityManager는 Thread-safe 하지 않기 때문에 동시성 문제가 발생할 수 있다 ⇒ 따라서 요청(스레드)별로 한 개씩 할당한다
- DB 연결이 필요한 시점에 DB Connection을 사용해 DB와 연결한다
Entity의 생명주기