2012-04-03 22 views
0

Meine Anwendung verwendet JPA und wird unter GlassFish 3.1 bereitgestellt (so mit EclipseLink). Es funktioniert gut, aber ich versuche jetzt eine DAO Implementierung zu verwenden.JPA- und DAO-Implementierung unter GlassFish 3.1

Ich finde that article. Aber es scheint nicht mit der Injektion von Persistenzkontext zu arbeiten. So schematisch habe ich eine Entitätsklasse, eine statusfreie EJB Klasse und eine persistence.xml Datei. In meinem EJB ein @PersistenceContext(name=...) Annotation. So funktioniert es.

Jetzt füge ich eine DAO-Schnittstelle und eine JPA-DAO-Klasse hinzu (die das Interaface implementiert). In meinem JPA-DAO versuche ich, den Persistenzkontext zu injizieren, aber es funktioniert nicht. Keine Ausnahme, aber bleibt null.

Wie kann ich tun?

Wenn das mit GlassFish nicht möglich ist, war meine erste Idee, den EntityManager an die DAO zu übergeben. Es funktioniert, aber ist es "nett"?

Die zweite Idee, implementieren Sie die JPA DAO wie eine staatenlose Bohne und injizieren Sie es in meinem EJB. Es funktioniert auch, aber ...? Ist es eine gute Idee oder nicht?

+0

Nehmen Sie sich eine Minute, um sicherzustellen, dass Sie Antworten auf Ihre Fragen akzeptiert haben: http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – Jim

+0

?? Du meinst für andere Fragen? Ok, aber es ist nicht möglich, Antworten zu akzeptieren, wenn es keine Antworten gibt oder wenn die Antwort meine Frage nicht beantwortet. – tweetysat

Antwort

1

Sie können den PersistenceContext nur injizieren, wenn das Objekt vom Container verwaltet wird. Es muss ein @Stateless oder @Singleton oder ähnliches sein. Sie können auch CDI (JSR-299) verwenden, um den Bean-Container zu verwalten und die Injektion zum Laufen zu bringen. Oder du könntest Spring benutzen, wie der Artikel, zu dem du verlinkt hast.

+0

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

+0

Ok, danke. Ich habe nicht gesehen, dass der Artikel den Frühling benutzt ... Aber ist es ein guter Weg, einen Dao staatenlos zu machen? Ich lese einige Leute (auch in diesem Forum) und sage, dass es keine gute Idee ist. – tweetysat

+0

Es gibt immer eine Debatte über die Verwendung von DAOs. Ich stimme Adam Bien zu, dass man sie im Allgemeinen mit EJB 3.x nicht braucht. 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/ roller/abien/eintrag/daos_aren_t_dead_but – Jim