EntityManagerFactory emf = Persistence.createEntityManagerFactory("project");
EntityManager em = emf.createEntityManager();
jpa에서 Entitymanagerfactory를 통해서 Entitymanager를 뽑아쓰는것과 다르게, 스프링에서는 스프링부트가 @PersistenceContext어노테이션만 달아주면 바로 EntityManager를 사용할 수 있게 해준다.
@PersistenceContext
EntityManager em;
@Autowired가 스프링 빈을 주입한다면, @PersistenceContext는 영속성 콘텍스트를 주입하는 jpa 어노테이션이다.
이때 @PersistenceContext 대신 @Autowired를 사용하면 안되는데, @PersistenceContext가 멀티쓰레드에서 각자 다른 EntityManager를 사용하도록 해주기 때문이다.
(참고:EntityManagerFactory는 thread-safe하지만 EntityManager는 thread-safe하지 않다)
'[ Backend ] > Spring' 카테고리의 다른 글
[Spring] 빈 스코프 (0) | 2022.01.27 |
---|---|
[Spring] NoUniqueBeanDefinitionException (0) | 2022.01.25 |
[Spring] IoC, 컴포넌트 스캔, 의존관계 주입 (0) | 2022.01.24 |
[Spring] 스프링의 싱글톤 (0) | 2022.01.22 |
[Spring] 스프링 컨테이너, 스프링 빈 (0) | 2022.01.22 |