EJBQL vs. komplexe Abfrage

Status
Nicht offen für weitere Antworten.

bronks

Top Contributor
Hi!

Meine App läuft auf JBoss mit MySql. Für eine Liste bräuchte ich Daten welche aus mehreren Entities kommen. In EJBQL könnte man das Query schon zusammenstottern, aber irgendwie erscheint mir das unappetitlich und unproduktiv.

Ich habe in einer SessionBean einfach eine Connection geschnappt und ein SQL direkt auf die Datenbank ausgeführt. Die Sätze habe ich in Beans verpackt, in einer ArrayList serialisiert und weitergereicht. Direkt auf die Entity greife ich nur zu wenn Transaktionen und Isolation gefragt sind. Ist das eine saubere Vorgehensweise? Macht Ihr das auch so?

Mal angenommen, daß mir der Finder einer Entity ein EJBQL ausführt, welches Daten aus mehreren Tabellen zurückgibt. Gegen was kann ich die Objekte der Collection casten bzw. wie komme ich an die Daten ran? Muß ich dafür eine extra entity bauen, welche die Felder der mehreren Tabellen enthält?

Danke

Bronks
 

Bleiglanz

Gesperrter Benutzer
wenn du wirklich die Beans als Objekte brauchst (und nicht nur eine Spezialliste), dann würde ich mit EJBQL arbeiten.

Und: finder und Select lieferen dir gleich direkt eine Collection von Referenzen auf die HomeInterfaces, d.h. du musst nur noch casten und kannst dann sofort damit weiterarbeiten

geht leider nicht immer, die QL ist nicht so richtig mächtig

und: wenns um Performance oder Spezialabfragen geht, oder man die "EJB-Objekte" gar nicht braucht -> dann ist der Direkt-JDBC Zugriff IMHO schon ok
 

bronks

Top Contributor
Sorry, aber ich komm damit doch nicht weiter.

Nehmen wir mal folgende Entities als Beispiel:
Artikel:
Artikelnummer (Pri)
Sparte (FK N:1)
Gewicht

Sparte:
Sparte (Pri)
Spartenbezeichnung

Lagerbestand:
Lagernummer (Pri)
Artikelnummer (Pri, FK N:1)
Lagerbestand

Ich will jetzt eine Collection mit folgenden Feldern haben: Artikelnummer, Gewicht, Spartenbezeichnung, Lagernummer, Lagerbestand

Wie muß das EJBQL aussehen?

Danke!

Bronks
 

Bleiglanz

Gesperrter Benutzer
im allgemeinen (wenn CMR verwendet wird!!)

einfach eine Liste ALLER Artikel

dann über die Methoden navigieren

artikel.getSparte().getSpartenbezeichnung()

usw.

dazu musst du aber alle Relationen in CMR umsetzen, wenn das nicht der Fall ist mach lieber JDBC
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben