Benutzer:Dirk Huenniger/ejb

Aus Wikibooks

Einleitung[Bearbeiten]

Beim ejb Programmieren gibt es ziemlich viele wichtige Dinge. Um irgendwo anzufangen beschränke ich mich zunächst auf sehr wenige. Meist geht es bei ejb darum daten aus einer Datenbank etwas schöner darzustellen. Die Datenbank muss dabei nicht zwingend relational sein. Eine realtionale Datenbank kann man sich als eine Sammlung von Tabellen wie man sie von Tabellenkulationen wie OpenOffice Calc her kennt vorstellen. Es kann zum Beispile die Tabelle Kunde mit den Spalten Name und Anschrift geben. In jeder Zeile dieser Tabelle steht je ein Kunde. Zum Beispiel der Herr Egon Müller der auf dem Holzweg 42 in Zermüllen in der Eifel beheimatet ist. Nun kann es eine Sogenannte Enitity Bean geben, welche gerade unseren Herrn Müller Representiert. Sie ist ein gewöhnliches Java Objekt welche die beiden Privaten Attribute Name und Anschrift besitzt. Ferner besitzt sie Methoden um diese Informationen in die Datenbank zu schreiben oder aus ihr zu lesen. Unsere Entity Bean kann also die ggfs. geänderte Anschrift der Herrn Müller in die Datenbank schreiben und anschließend den Datensatz von Herrn Schulze aus der Datenbank laden. Ob die Entity Bean gerade an einen Konkreten Datensatz gebunden ist oder nicht oder gar an welchen liegt nicht in der Kontrolle der Programmierers. Die Bean wird von einen Server einem Songeannnten EJB Container verwaltet. Ein Entwickler Enwickelt also die Bean um anderen den Zugriff auf die Datenbank zu vereinfachen. Ein Anwender der Bean verwendet die Bean um vereinfacht auf Daten aus der Datenbank zugreifen zu können. Der Anwender Greift dabei nicht direkt auf die Bean zu. Im Algemeinen ist der EJB Container nicht auch die Gleichen Rechner wie die Anwendung der Anwenders. Der Anwender enhällt lediglich zwei Objekte mit denen mit der der Bean über das Netzwerk und den EJB Container kommunizieren kann. Die Details mit welcher Bean er kommuniziert wie diese Bean erzeugt vernichtet und an Daten aus der Datenbank gebunden werden kann regelt der EJB Container selbstständig. Konkret erhält der Anwender ein Objekt was das sogenannte Home Interface implementiert und ein ggfs auch ein Objekt was das sogenate Remote Interface implementiert. Das Home Interface enthält methoden die sich auf die Tabelle als ganzes beziehen, nicht aber auf eine Konkrete Zeile in der Tabelle beziehen. Das Objekt oder die Objekte die das Remoter Interface Implemeniren beziehen sich jedeweils auf konkrete Zeilen in der Datenbank. So kann zum Beispiel das Home Objekt eine Methode enthalten die eine Liste mit allen Remote Objekten von Personen in der Datenbank zurückliefert deren Nachname mit M beginnt. Wir eine solche Methode aufgerufen werden ggfs neue Beans erzeugt und ihnen werden konkrete Datensaätze zugewiesen. Diese werden dann mit den Remote Objekten in der Maschiene der Anwenders verbunden, so das er nun auf diese zugreifen kann. Ein einzelner Methodenaufrufe kann also zu komplexen und vom Programmierer nicht unmitelbar zu übersehenden aktivitäten des EBJ Container führen. Wichtig ist nur das der Anwenders eine Sicht auf die gewünschten Datenbankzeilen erhält, die durch die Beans in zusammenabreit mit dem EJB Kontainer konkret beschrieben und beeinflusst wird, jedoch die eigentlichen beans selbst nie zu Gesicht bekommt.

Wer Implementiert was?[Bearbeiten]

Der EJB Programmierer definiert das Home und das Remote Interface und legt damit die möglichen Operatioenen auf seinen Datensätzen fest. Bei der Implementierung der Bean implementiert er diese Opeationen, indem er Methoden mit sehr änlicher und genau definierter signatur in der kokreten Bean-Klasse implementiert. Das Home Interface und das Remoterface werden jedoch beide selbst als Interface nicht in der Bean klasse implementiert. Die Bean Klasse erbt also nicht von den Home und Remote interfaces. Dennoch implementiert sie zwingend fast alle Methoden die im Home und Remote Interface deklariert werden, jedoch mit leicht anderen Namen Signaturen. Die Bean Klass kann die logik auf zum Zugriff auf die Datenbank konkret implementieren oder abstakt deklarieren und von EJB Kontainer implemieren lassen. Im ersten falle spricht man von bean managed persistance (bmp) im zweiten von container managed persistance (cmp). Die Logik um einen Aufruf einer Methode des Home Objekt im Rechner des Anwenders zu der entsprechenden in der Bean implementierten methode umzuleiten belibt vollständig den EJB Container überlassen. Er implementiert also das Home und Remote Interface. Das der EJB Container ein Programm ist handelt es sich hierbei um generierten Code.