2012-04-03 5 views
0

내 응용 프로그램은 JPA을 사용하며 GlassFish 3.1 (따라서 EclipseLink 사용) 아래에 배포됩니다. 잘 작동하지만 이제는 DAO 구현을 사용하려고합니다.GlassFish 3.1의 JPA 및 DAO 구현

that article입니다. 하지만 퍼시스턴스 컨텍스트를 주입하면 작동하지 않는 것 같습니다. 그래서 개략적으로 엔티티 클래스 인 상태가없는 EJB 클래스와 persistence.xml 파일이 있습니다. 내 EJB에서 @PersistenceContext(name=...) 주석. 그것도 효과가 있습니다.

이제는 DAO 인터페이스와 JPA DAO 클래스 (인터페이스 구현)를 추가합니다. 내 JPA DAO에서 필자는 지속성 컨텍스트를 주입하려고 시도하지만 작동하지 않습니다. 예외는 없지만 null로 남습니다.

어떻게하면됩니까?

GlassFish에서 그렇게 할 수 없다면, 첫 번째 아이디어는 entitymanager를 DAO에 전달하는 것이 었습니다. 효과가 있지만 좋은가?

두 번째 아이디어는 JPA DAO를 stateless bean처럼 구현하여 EJB에 삽입하는 것입니다. 그것도 작동하지만 ...? 좋은 생각인가요?

+0

잠시 시간을내어 질문에 대한 대답을 수락했는지 확인하십시오. http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – Jim

+0

?? 다른 질문이 있으십니까? 그래,하지만 답변이 없거나 내 질문에 답변이없는 경우 대답을 수락 할 수 없습니다. – tweetysat

답변

1

개체가 컨테이너에 의해 관리되지 않는 한 PersistenceContext를 삽입 할 수 없습니다. @Stateless 또는 @Singleton 또는 이와 유사한 것이어야합니다. CDI (JSR-299)을 사용하여 컨테이너 관리를 수행하고 주입이 작동하도록 할 수도 있습니다. 또는 Spring과 연계 된 기사처럼 Spring을 사용할 수도 있습니다.

+0

참조 http://stackoverflow.com/questions/2021370/ejb-3-1-ejb-injection-into-pojo – Jim

+0

감사합니다. 나는 기사가 봄을 사용하는 것을 보지 못했다. 그러나 dao를 무국적자로 만드는 좋은 방법 일까? 나는 좋은 생각이 아니라고 말하는 몇몇 사람들 (이 포럼에서도)을 읽었다. – tweetysat

+0

DAO를 사용하는 방법에 대한 토론은 항상 있습니다. 저는 Adam Bien과 동의하는 경향이 있습니다. 일반적으로 EJB 3.x에서는 필요하지 않습니다. http://www.adam-bien.com/roller/abien/entry/jpa_ejb3_killed_the_dao http://www.adam-bien.com/roller/abien/entry/you_should_dao_if http://www.adam-bien.com/ 롤러/abien/entry/daos_aren_t_dead_but – Jim

관련 문제