JPA EntitiyManager

Status
Nicht offen für weitere Antworten.

ds_dom

Mitglied
Hallo zusammen,

ich habe innerhalb meiner J2EE Applikation eine Javaklasse die auf die Datenbank zugreifen soll. Diese Klasse ist jedoch keine Bean (Konfigurationsklasse, die Konfigeinstellung von der Datenbank laden soll).
Gibt es eine Möglichkeit sich den EntityManager oder die EntityManagerFactory vom JNDI zu laden?
Der Applicationsserver ist ein Bea Weblogic 10. Die JPA implementierung ist KODO.
Mit dem folgenden Code bekomme ich leider kein EntityManager zurück.:(
Java:
new InitialContext().lookup("jndi_name");

Vielen Dank für eure Hilfe

Dom
 

JanHH

Top Contributor
Selber machen?
Java:
EntityManagerFactory factory=Persistence.createEntityManagerFactory("<Name der Persistenunit>");
EntityManager m=factory.createEntityManager();
 

ds_dom

Mitglied
Danke für eure Antwort!

@JanHH
Leider hilft mir das nichts, hab ich schon mal probiert. Meine persistence.xml wird generiert und daher beinhaltet sie kein Mapping der persistenten Klassen.
[xml]
<class>com.test.data.ProductBE</class>
[/xml]

Aus diesem Grund möchte ich den EntityManager welcher vom Container verwaltet wird. Dieser ist ja "fertig" konfiguriert.

@Landei
Wie oben beschrieben handelt es sich hier um eine Klasse die nicht vom Container gemanaged wird, daher geht dependency injection nicht.
 

JanHH

Top Contributor
Ich hab das mapping der Klassen auch nicht in der persistence.xml eingetragen, aber es funktioniert trotzdem. Ist wohl irgendeine default-Einstellung. Ich benutze allerdings Hibernate.

Mir kommts allerdings auch komisch vor, Konfigurationseinstellungen aus einer Datenbank zu laden, zu einem Zeitpunkt, wo offenbar noch gar keine Verbindung zu der Datenbank besteht, und vielleicht sogar denkbar ist, dass in der Datei Konfigurationseinstellungen, die die Datenbank betreffen, stehen. Wärs nicht einfacher, die aus einer simplen Textdatei zu laden, oder als Konfigurationsparameter in einer der diversen xml-Dateien einzustellen?

Sonst vielleicht einfach eine JDBC-Verbindung aufbauen und "per Hand" die notwendigen Informationen aus der Datenbank lesen?
 

ds_dom

Mitglied
Ich habe es bereits ohne das Mapping versucht leider bekomme ich die Fehlermeldung, dass die Klasse nicht gemappt ist.

Die Anforderung besteht vom Kunden. Wir lesen Konfigurationseinstellungen aus der Datenbank und aus dem Filesystem, da kann ich leider nichts machen.

Ein Verbindung mit JDBC "per Hand" habe ich mir auch schon überlegt, wollte ich aber bisher vermeiden. So wie es aussieht werde ich wohl nicht mehr daran vorbei kommen JDBC zu nutzen.

Danke für deine Hilfe.
 

JanHH

Top Contributor
Hab gerade mal geschaut, man kann den EntityManager von der Factory auch mit einer Funktion createEntityManager(Map map) erzeugen lassen, map enthält dabei irgendwelche Properties. Vielleicht kann man die zu mappenden Klassen da auch als Property übergeben?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben