2013-05-16 4 views

답변

6

@PersistenceContext은 컨테이너 관리 엔터티 관리자에 대한 종속성을 선언하는 특정 주석입니다. 지속성 유형과 같은 더 많은 매개 변수를 지정할 수 있습니다. 지속성 유형을 EXTENDED로 설정하는 것은 Stateful Session Bean의 전체 수명주기에 대한 지속성 컨텍스트를 유지하려는 경우 중요합니다. @PersistenceContext은 JPA 주석입니다.

@Inject은 CDI 주석입니다. 매우 일반적이며 다양한 개체를 주입하는 데 사용할 수 있습니다.

5

@PersistenceContext은 매우 특수한 주석이며 "이 필드에 지속성 컨텍스트를 주입하십시오"라고 말합니다. 관리 컨텍스트 외부에서는 사용할 수 없습니다. 한편,

@Inject은 매우 일반적입니다. 그것은 "이 분야를 주입해야합니다."라고 말합니다. 반드시 영속성 컨텍스트는 아니지만 주입 된 것으로 정의하려는 모든 것입니다.

This article (당신이 요구하는 것의 사과에는 정확히 사과가 아닙니다.) 당신에게 더 많은 빛을 줄 수 있습니다.

당신이 @Inject가 무엇인지의 소스로 바로 이동하려면 you can read the spec here :

@Inject는 자바 클래스 또는 인터페이스에 대한 종속성을 주입 할 수있는 지점을 식별합니다. 그런 다음 컨테이너는 필요한 자원을 제공합니다. 이 예제에서 Login 빈은 두 개의 주입 지점을 지정합니다.

+0

나는 지금까지 답을 좋아하지만, 다른 옵션 대신 하나의 옵션을 선택했을 때의 결과는 무엇입니까? –

+0

잘 모르겠습니다. (문제는 여기까지입니다. –

0

@Inject은 용기가 EntityManager으로 보이기를 바랍니다.

그러나 둘 이상이있는 경우 일부 한정자 특수 효과를 거쳐 제작해야하거나 unitName 속성을 @PersistenceContext 특수 효과에 전달할 수 있습니다.