Sie können mithilfe des Assistenten zum Erstellen von EJB 3.1-Session-Beans in Ihrem EJB-Projekt eine Session-Bean und eine JPA-Entität erstellen.
Vorgehensweise
- Befolgen Sie die Schritte zum Erstellen eines EJB-Projekts. Klicken Sie neben dem Feld Konfiguration auf Ändern:
- Wählen Sie auf der Seite "Projektfacetten" die Option Java-Persistenz
aus und klicken Sie auf OK:
- Führen Sie die Schritte zum Erstellen Ihres EJB-Projekts aus; gehen Sie auf der
Seite "JPA-Facetten" wie folgt vor:
- Wählen Sie im Feld Plattform die Option
RAD-JPA-Plattform aus.
- Wählen Sie im Feld Verbindung eine
Verbindung aus oder klicken Sie auf Verbindung hinzufügen,
um eine Verbindung zu erstellen. Führen Sie die Schritte zum
Erstellen einer Datenbankverbindung Ihrer Wahl aus.
- Wählen Sie Standardschema aus der Verbindung überschreiben aus
und wählen Sie ein anderes Schema im Feld Schema aus,
wenn Sie das Standardschema nicht verwenden möchten. Klicken Sie auf Fertigstellen.
- Erstellen Sie eine Session-Bean in Ihrem EJB-Projekt:
- Klicken Sie in der Perspektive "Java™ EE" mit der rechten Maustaste auf das Projekt und
wählen Sie die Optionen aus. Daraufhin wird der Assistent zum Erstellen von EJB 3.1-Session-Beans geöffnet.
- Wählen Sie im Feld Quellenordner den Quellenordner für die neue Bean aus.
- Geben Sie in das Feld Java-Paket den Paketnamen für die neue Bean ein.
- Geben Sie in das Feld Bean-Name den Namen ein, den Sie der Enterprise-Bean
zuordnen möchten. Gemäß der Konvention beginnen Bean-Namen mit einem Großbuchstaben.
Anmerkung: Sie können für den Bean-Namen Unicode-Zeichen verwenden. Diese werden jedoch für
Enterprise-Bean-Pakete und für Klassen, die Enterprise-Beans zugeordnet sind, nicht unterstützt.
- Wählen Sie "Fern" aus, um eine ferne Schnittstelle hinzuzufügen,
oder wählen Sie "Lokal" aus, um eine lokale Schnittstelle hinzuzufügen. Klicken
Sie anschließend auf Fertigstellen.
- Erstellen Sie eine JPA-Entität in Ihrem EJB-Projekt:
- Klicken Sie mit der rechten Maustaste auf das EJB-Projekt und wählen Sie die Optionen
aus.
- Vergewissern Sie sich, dass die Verbindung und das Schema auf der Seite für
die Datenbankverbindung richtig sind, und klicken Sie auf Weiter.
- Geben Sie auf der Seite "Entitäten aus Tabellen generieren" im Feld "Quellenordner"
einen Namen für Ihren Quellenordner ein oder navigieren Sie zu dem Pfad des Ordners,
der die Java-Quellendatei
für Ihre Entität enthalten soll.
- Geben Sie im Feld "Java-Paket"
das Java-Paket für Ihre Entitäten
an oder navigieren Sie zu dem Java-Paket.
- Wählen Sie Klassen in "persistence.xml" synchronisieren aus,
wenn Sie Ihre Entitätsklasse mit der Datei persistence.xml synchronisieren wollen.
- Wählen Sie im Feld Tabellen die Tabelle oder Tabellen aus,
aus der bzw. denen Sie Entitäten erstellen wollen, und klicken Sie auf Fertig stellen.
Der Java-Editor wird mit Ihrer JPA-Entitätsklasse geöffnet.
- Erstellen Sie Abfragen in Ihrer JPA-Entitätsklasse:
Öffnen Sie Ihre JPA-Entitätsklasse im Java-Editor, sodass Sie Abfragen erstellen
können, um Daten aus der Datenbank abzurufen. Die folgenden Beispiele
zeigen zwei einfache Abfragen in der Entitätsklasse:
@Entity
@NamedQueries({
@NamedQuery(name = "findBySalaryLessThan", query = "SELECT e FROM Employee e WHERE e.salary < :salary"),
@NamedQuery(name = "findBySalaryGreaterThan", query = "SELECT e FROM Employee e WHERE e.salary > :salary")
})
- Verwenden Sie Ihre JPA-Entität in der Session-Bean: In
Ihrer Stateless-Session-Bean können Sie per "EntityManager Injection"
die Abfragen ausführen, die Sie in Ihrer JPA-Entität erstellt haben. Öffnen Sie Ihre Session-Bean-Klasse im Java-Editor und erstellen Sie einen EntityManager,
der eine Verbindung zur JPA-Entität herstellt. Im nachfolgenden Beispiel werden die in einem vorherigen Schritt erstellten Abfragen aufgerufen:
@Stateless
public class HumanResourcesBean implements HumanResources {
@PersistenceContext
private EntityManager emanager;
public HumanResourcesBean() {
}
public List<Employee> findBySalaryLessThan(double salary) {
Query query = emanager.createNamedQuery("findBySalaryLessThan");
query.setParameter("salary", BigDecimal.valueOf(salary));
@SuppressWarnings("unchecked")
List<Employee> result = query.getResultList();
return result;
}
public List<Employee> findBySalaryGreaterThan(double salary) {
Query query = emanager.createNamedQuery("findBySalaryGreaterThan");
query.setParameter("salary", BigDecimal.valueOf(salary));
@SuppressWarnings("unchecked")
List<Employee> result = query.getResultList();
return result;
}
}