[JPA] EntityManager

김형진·2023년 5월 12일
0

EntityManager를 사용하다 보면 의문이 드는 부분이 있는데 바로

싱글톤인데 어떻게 다른 영속성 컨텍스트를 다루는가 이다.

EntityManager는 빈으로 관리돼서 Respository 여기저기서 의존주입 받아 사용된다.

당연히 동시성 문제를 생각할 수 밖에 없는데,

사실 주입받는 EntityManager는 프록시객체이고,
이 객체에 요청이 들어오면 트랜잭션 단위에 따라서 실제 엔티티매니저에 각각 라우팅한다고 한다.

그럼으로써 동시성 문제도 해결할 수 있고 나아가
Repository가 아닌 Service나 Test Class에서 의존주입 받은 entityManager를 통해서도 같은 트랜잭션 안에 있는 Repository가 사용하는 영속성 컨텍스트에 접근할 수 있는 것이다. (트랜잭션 단위로 라우팅하기 때문에)

profile
히히

0개의 댓글