컨테이너는 @PersistenceContext
어노테이션 및 주입 EntityManagers
의 스캔을 담당합니다. 은 EntityManager
의 인스턴스를 프록시 처리 할 수 있습니다.
컨테이너에서 종속성 삽입을 담당하는 EJB에서는 스레드로부터 안전하다는 것을 확신 할 수 있습니다. 지속성 컨텍스트는 동일한 트랜잭션 내의 여러 구성 요소간에 공유됩니다. 당신이 (동시성이 우려입니다) 서블릿 환경에서 @PersistenceContext
을 사용하여이 EntityManager
를 주입하는 경우
그러나, 당신이있어 하지 스레드 안전합니다. 대신 @PersistenceUnit
을 사용해야합니다. 당신은 JBoss 7 JPA Reference Guide의이 부분을 참조 할 수 있습니다 :
엔티티 관리자는 스레드 안전을 것으로 예상되지 않는다는 것을 명심 ( 여러 스레드에 볼 수있는 서블릿 클래스 변수에 주입하지 않는다).
몇 시간 전 내가 지속성 컨텍스트는 컨테이너가 JTA 거래와 EntityManagers
의 프록시 사이에 공유에 대해 알고 있으며 here을 발표 것을 표현했습니다. 당신이 유용하다고 생각하기를 바랍니다.