Ich habe versucht, eine DAO-Klasse zu schreiben und den EntityManager innerhalb dieser Klasse zu verwenden, um Persistenz-Operationen durchzuführen. Meine Datenbank ist als JTA-Datenquelle in meiner persistence.xml definiert und entsprechend als Datenquelle in meinem Webanwendungsserver registriert.Sind JPA-Transaktionen in einem EJB enthalten?
So habe ich ein Problem bei der Verwendung der em.persist() -Methode des EntityManager in meinem DAO, weil ich eine Transaktion brauche. Offensichtlich muss es eine spezielle Art von Transaktion namens UserTransaction sein.
für Beispiele in der Web-Suche finde ich, dass Sie diese Transaktion mit @Resource UserTransaction utx;
injizieren kann aber für die Injektion, hat mein DAO zu arbeiten Klasse vom Container initialisiert werden, indem sie ein EJB machen (@Stateless) . Wenn ich meinen DAO-Container verwalten lasse, kann ich meine DAO-Klasse nicht frei und manuell initialisieren.
Wie kann ich Transaktionen in meiner DAO-Klasse erstellen, ohne sie zu einem EJB zu machen? Muss ich den JNDI manuell nach der UserTransaction durchsuchen?