Java Reference
In-Depth Information
einer Tabelle. Das Erzeugen, Ändern und Löschen von Einträgen in der Datenbank erfolgt
ohne die Programmierung von SQL-Anweisungen. Mit Entities wird eine Abbildung aus
der objektorientierten in die relationale Welt der Datenbanken realisiert, weshalb man hier
auch von einem Objekt-Relationalen Mapper (ORM) spricht. Die JPA (Java Persistence
Architecture), welche die Grundlage der Entities bildet, ist dem ORM Hibernate sehr ähn-
lich. Hibernate kann sogar als eine Form der Realisierung der JPA genutzt werden.
Wie eine Session-Bean-Klasse ist eine Entity-Klasse über eine spezielle Annotation gekenn-
zeichnet. Für Entities ist es die Annotation @Entity. Die Klasse in Listing 13.13 ist eine
Klasse, die eine Person mit ihrem Vor- und Nachnamen repräsentiert. Datenbanktabellen
benötigen einen Primärschlüssel. Diesem Zweck dient das Attribut id des Typs int in der
Klasse Person. Mit der Annotation @Id wird die Funktion des Primärschlüssels angezeigt.
Durch die weitere Annotation @GeneratedValue wird festgelegt, dass der Schlüssel automa-
tisch und nicht von der Anwendung erzeugt werden soll.
Listing 13.13 Beispiel einer Entity-Klasse
package javacomp.ejb.person.server;
import java.io.Serializable;
import javax.persistence.*;
@Entity
public class Person implements Serializable
{
@Id
@GeneratedValue
private int id;
private String firstName;
private String secondName;
//Getter- und Setter-Methoden für alle drei Attribute
...
}
Entities werden aus Session Beans heraus genutzt. Für den Zugriff auf die Datenbank benö-
tigt man einen EntityManager. Diesen erhält man am einfachsten durch Dependency Injec-
tion mit der Annotation @PersistenceContext. Die Stateless-Bean-Klasse PersonManager-
Impl (s. Listing 13.14) besitzt die Methoden createPerson, fi ndPerson und removePerson
(die dazugehörige @Remote-Schnittstelle PersonManager ist hier nicht gezeigt). In der
Methode createPerson wird ein Objekt der Klasse Person erzeugt und durch Aufruf der
Methode persist auf dem EntityManager ein entsprechender Eintrag in der Datenbank
erzeugt. Nach dem Abspeichern ist der erzeugte Schlüssel im Entity-Objekt eingetragen. Er
wird von der Methode createPerson zurückgegeben. Ein solcher Schlüssel kann später der
Methode fi ndPerson übergeben werden. Diese Methode verwendet die Methode fi nd des
EntityManagers, welche die Daten aus der Datenbank liest und ein passendes Person-Objekt
erzeugt. Die Variante der hier verwendeten Methode fi nd ist eine generische Methode, bei
der man neben dem Schlüssel die Klasse des zu erzeugenden Objekts als Parameter angibt;
der Rückgabetyp ist dann von diesem Typ, ohne dass man dazu casten muss. Da die Klasse
Person aus Listing 13.13 Serializable implementiert, kann eine Kopie eines Person-Objekts
an den Aufrufer zurückgegeben werden. Die letzte Methode removePerson löscht — wie ihr
 
Search WWH ::




Custom Search