08.09.2012

JEE6 Tutorial - Part 6 - Verbinden von JSF, Backing Bean, EJB und Datenbank-Entity

In 6. Teil des Tutorials werden die verschiedenen Schichten noch verbunden.

Damit die JSF-Seite die Backing-Bean benutzen kann, muss die Datei index.xhtml noch folgendermaßen angepasst werden:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>URLManager</title>
    </h:head>
    <h:body>
        <h:form>
            Bitte URL eintragen:
            <h:inputText value="#{urlManagerPM.entity.url}"/>
            <h:commandButton value="Add" action="#{urlManagerPM.store()}" />
        </h:form>
    </h:body>
</html>

Das inputText-Element wird an die url der entity vom urlManagerPM gebunden. D.h. der Wert des Eingabefelds ist direkt in das entity geschrieben.

Der commandButton wird mit der Funktion store() der Backing-Bean verbunden, so dass diese Methode beim Klick auf den Button aufgerufen wird.

Abschließend muss noch die Bean angepasst werden, so dass der Wert in die Datenbank geschrieben wird und der Kompilierungsfehler in der Klasse UrlManagerPM verschwindet.

package org.hameister.urlmanager;

import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Hameister
 */
@Stateless
@Named
public class UrlManagerBean {

    @PersistenceContext
    EntityManager em;

    public void addUrl(UrlManagerEntity entity) {
        System.out.println("Added");
        em.persist(entity);
    }
}

In der Funktion addUrl wird ein Parameter ergänzt, der das Datenbank Entity aufnehmen kann. Außerdem wird die übergebene Entity vom EntityManager durch den Aufruf persist in die Datenbank geschrieben.

Nun kann die Anwendung über das Kontextmenü vom Projekt mit Run gestartet werden. Normalerweise sollte sich ein Browser-Fenster öffnen, in dem folgendes zu sehen ist:

Create New Project

Nach der Eingabe einer URL und dem Klick auf den Add-Button wird der Wert in die Datenbank geschrieben.

Ob die URL korrekt in die Datenbank geschrieben wurde, lässt sich folgendermaßen überprüfen.

Man wechselt auf der linken Seite zu dem Reiter Services. Dort wählt man die Derby-Datenbank aus und verbindet sich mit Hilfe des Kontextmenüs (Connect...) mit der Datenbank. Unter APP->Tables->URLMANAGERENTIY ruft man im Kontextmenü View Data... auf.

Create New Project

Allerdings ist es ja so, dass man die persistenten Daten, d.h. die URLs, nicht jedesmal in der Datenbank anschauen möchte. Es wäre viel einfachen, wenn man die direkt im Browser angezeigt bekommt. Wie dies funktioniert, wird im 7. Teil erklärt: Daten auslesen.