Beispiel: Bean Managed Persistence
Beispiel für zwei Entity Beans mit Bean Managed Persistence, die in einer (ebenfalls bean managed) 1:n-Beziehung stehen.
Auf die Beans wird per Webclient zugegriffen wird.
Inhalt:
Vorbereiten der Datenbank
Deploy der Entity Bean "KuchenBMP"
Deploy der Entity Bean "ZutatBMP"
Deploy des Web Clients
Aufbau des Beispieles
Mittels einer Entity Bean werden Objekte vom Typ "KuchenBMP" abgebildet.
Ein Kuchen besteht aus der Property "Name" und dem Primary Key "KuchenID".
Mittels einer zweiten Entity Bean werden Objekte vom Typ "KuchenZutatBMP" abgebildet.
Ein Kuchen besteht aus 0 bis n Zutaten. Eine Zutat besteht aus den Properties
"Name" und "Menge" sowie "ZutatID" (Primary Key) und "KuchenID" (Foreign Key auf KuchenBMP).
Bestandteile:
a) Entity-Bean-Klasse für ein Objekt "KuchenBMP" mit Local-Interfaces.
a) Entity-Bean-Klasse für ein Objekt "ZutatBMP" mit Local-Interfaces.
c) Web Client.
Quellcode
In diesem Beispiel wird ein Dynamic Web Project namens "KuchenZutatBMP" verwendet.
Hier gibt es den Code als Export (siehe Anleitung zum Importieren eines Java Projects) KuchenZutatBMPExport.zip.
Hier steckt die EAR-Datei des Deploytools: KuchenZutatBMP.ear
Vorbereiten der Datenbank
Da wir hier mit Bean Managed Persistence arbeiten, müssen die Datenbanktabellen manuell
angelegt werden. D.h. idealerweise öffnet man das Pointbase-Administrations-Tool und erzeugt zwei Tabellen mit folgender Struktur:
CREATE TABLE "PBPUBLIC"."KUCHENBMPBEAN"
(
kuchenid INTEGER NOT NULL,
name VARCHAR ( 256),
CONSTRAINT KuchenBMPBean_PK PRIMARY KEY ( kuchenid)
);
CREATE TABLE "PBPUBLIC"."ZUTATBMPBEAN"
(
ZutatId INTEGER NOT NULL,
ZutatName VARCHAR ( 256),
Menge VARCHAR ( 256),
KuchenID INTEGER NOT NULL,
CONSTRAINT ZutatBMPBean_PK PRIMARY KEY ( ZutatId),
CONSTRAINT ZutatBMPBean_FK1 FOREIGN KEY ( KuchenID) REFERENCES "PBPUBLIC"."KUCHENBMPBEAN"( KUCHENID)
);
Wir sind sogar so mutig und legen einen Foreign Key von der Zutat zum Kuchen an, wobei
wir ein Löschen eines Kuchens verbieten wollen, solange Zutaten existieren (d.h. die Methode
"ejbRemove" der KuchenBMPBean muss zuerst die Zutaten löschen).
Deploy der Entity Bean "KuchenBMP"
Schritt 1: Einstellungen siehe Screenshot.
Zu beachten: auch die Dateien der Zutat-Bean werden dem JAR zugefügt.
Schritt 2: Bean-Klasse sowie die Local-Interfaces auswählen.
Schritt 3: Als "PersistenceManager" wird "Bean-Managed" gewählt. Wichtig ist, dass der Typ des Primary Keys angeben wird
(Rückgabe der Methode "ejbFindByPrimaryKey", im Beispiel "java.lang.Long").
Nachbearbeitung:
Da im Code die Datenbankverbindung unter einem JNDI-Namen referenziert wird, muss diese Verbindung konfiguriert werden.
Auf der TabPage "ResourceRefs" einen Eintrag mit dem Namen "jdbc/KuchenZutatBMPDB" vom Typ "javax.sql.DataSource" zufügen.
Diese referenziert eine im Container definierte Resource "jdbc/PointBase", also unsere gute alte Pointbase-Datenbank.
Deploy der Entity Bean "ZutatBMP"
Schritt 1: Dem bestehenden JAR wird eine weitere Bean zugefügt, d.h. es sind keine weiteren Klassen zuzufügen.
Schritt 2: Bean-Klasse sowie die Local-Interfaces auswählen.
Schritt 3: Es wird wiederum "Bean Managed Persistence" gewählt, der Primary Key ist ebenfalls vom Typ "java.lang.Long".
Nachbearbeitung:
Hier muss die gleiche Datenbankreferenz zugefügt werden wie in der KuchenBean.
EJB-Referenzen
Die KuchenBMPBean referenziert die ZutatBMPBean, d.h. es muss eine EJB-Referenz auf sie zugefügt werden:
Umgekehrt muss bei der ZutatBMPBean eine Referenz auf die KuchenBMPBean zugefügt werden.
Deploy des Web Clients
Schritt 1: Hinzufügen der Dateien: 4 JSP-Seiten und die Local-Interfaces der Beans.
Anschließend hinzufügen der vier JSPs.
Nachbearbeitung:
Festlegen der Context-Root: kuchenzutatbmp
Folgende EJB-Referenzen hinzufügen:
"ejb/KuchenBMP" referenziert "com.knauf.ejb.kuchenzutatbmp.LocalKuchenBMPHome" und "com.knauf.ejb.kuchenzutatbmp.LocalKuchenBMP".
"ejb/ZutatBMP" referenziert "com.knauf.ejb.kuchenzutatbmp.LocalZutatBMPHome" und "com.knauf.ejb.kuchenzutatbmp.LocalZutatBMP".
Nachbearbeitung:
Auf dem Karteireiter "File Refs" unter "Welcome Files" die Datei "Kuchen.jsp" eintragen. Dadurch
wird sie als Default-Seite für diesen Context angezeigt.
Die Anwendung ist jetzt unter http://localhost:8080/kuchenzutatbmp/
zu erreichen.
Version 1.0.0.0, Stand 01.11.2005
Historie:
1.0.0.0 (01.11.2005): Erstellt