JPA/Core
EntityManager
by BAYABA
2021. 10. 13.
- 개인 공부 목적으로 작성한 글입니다.
- 아래 출처를 참고하여 작성하였습니다.
- 계속 업데이트 할 예정입니다.
목차
- EntityManager란?
1. EntityManager란?
- 엔티티를 저장하는 메모리상의 데이터베이스라고 볼 수 있습니다.
- 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 합니다.
- 하지만 EntityManagerFactory와 달리 Thread-Safe하지 않기 때문에 동시성 문제가 발생할 수 있습니다.
- 그래서 엔티티 매니저는 스레드간에 공유를 절대로 해서는 안 됩니다.
- 그래서 일반적으로 EntityManager를 @PersistenceContext로 스프링이 관리해주는 방식으로 사용합니다.
- @PersistenceContext를 사용해서 EntityManager를 주입받으면
- 스프링에서 EntityManager를 Proxy로 감싼 EntityManager를 생성해서 주입해주기에 Thread-Safe를 보장
@PersistenceContext
private EntityManager entityManager;
출처
- EntityManagerFactory, EntityManager, PersistenceContext란?