# JSF - Anfängerfragen



## Guest (5. Jun 2008)

Hallo,

ich habe mich mit NetBeans in JSF eingearbeitet, und zwar mit diesen drei Tutorials:

http://www.netbeans.org/kb/articles/jAstrologer-intro.html
http://www.netbeans.org/kb/articles/jAstrologer-validate.html
http://www.netbeans.org/kb/articles/jAstrologer-jsfformtags.html

Dieses Wissen will ich nun zu Lernzwecken auf eine Datenbank-Anwendung übertragen. Und zwar eine "Künstler"-Verwaltung. Anfangen möchte ich ganz einfach mit einer Tabelle und zwar KUENSTLER.
Auf der Seite KuenstlerListe.jsp will ich den ganzen Inhalt der Tabelle darstellen. Das Handwerkszeug dazu habe ich (hoffentlich richtig) verstanden. Also ich weiß, wie man Daten (ich mache es mit JPA) aus einer DB rausholt etc... Nur weiß ich nicht, wann und wo ich das mache, und wenn ich die Daten dann habe, wie und wo ich diese hinstelle, damit ich sie darstellen kann etc...

Bitte gebt mir einen Stups in die richtige Richtung, danke!

Stefan


----------



## SnooP (5. Jun 2008)

Darstellen tust du mit enier <h:dataTable... - diese will eine Collection haben mit Elementen bei dir einzelnen Künstler-Objekten pro Zeile...
holen tust du das ganze ausgelöst über eine action-Methode deines Controllers (einer managed-bean) und die greift auf ein sog. DAO zu, welches via JPA/Hibernate(?) auf die DB zugreift und die Liste mit den Künstlern zurückholt...

genügend Stups?


----------



## Gast (5. Jun 2008)

Du nutzt doch Netbeans 6.1, oder?
In dem Fall würde ich mal die Datenbank aufsetzen mir daraus die Entities generieren lassen (Entity Classes from Database) und anschließend per CRUD- Generierung (JSF Pages from Entity Class) die Seiten, Controller und Converter.
Das was du dann hast sieht zwar nicht schön aus, ist aber ne gute Grundlage um drauf aufzubauen.


----------



## Guest (5. Jun 2008)

Eure beiden Antworten in Kombination haben mich schon ein Stück weiter gebracht...

@Gast:
Kann es sein, dass beim generieren der CRUD-JSPs und Klassen die faces-config.xml nicht mit angepasst wird. Ich habe deinen Vorschlag in einem komplett neuen Projekt ausprobiert und die faces-config.xml ist nach wie vor leer.... Vielleicht hab ich auch was vergessen... Also weder die Navigation-Rules/-Cases, noch die Managed Bean für den Controller wurden angelegt. Deswegen funktioniert die Anwendung auch noch nicht. Vielleicht ist es auch einfach zu viel verlangt  ...

@SnooP:
Meinst du mit einer action-Methode beispielsweise folgendes (noch ohne DB, sondern hart codiert):

Klasse KuenstlerController

```
public List<Kuenstler> getKuenstler() {
        ArrayList<Kuenstler> list = new ArrayList<Kuenstler>();
        list.add(new Kuenstler("Monet"));
        list.add(new Kuenstler("Da Vinci"));
        return list;
    }
```

und


```
<h:dataTable value='#{KuenstlerController.kuenstler}' var='item'
```

Wenn ja, dann hab ichs bis dahin kapiert, glaub ich...


Nur das mit dem DAO sagt mir noch nichts... kann ich in der Methode getKuenstler() nicht einfach direkt mit JPA die Daten aus der DB holen, oder wäre das unsauber?


Stefan


----------



## Guest (6. Jun 2008)

Normalerweise sollte er auch die faces-config.xml anpassen, es gab da allerdings nen Bug in der 6.1 Beta, der vielleicht  noch nicht behoben ist. Notfalls muss man die Einträge dafür halt selber machen oder Netbeans 5.5 verwenden, da gehts sicher.

Bei DAO handelt es sich um ein Entwurfsmuster, das kannst du hier nachlesen: http://de.wikipedia.org/wiki/Data_Access_Object

Typischerweise sieht so eine DAO Klasse folgendermaßen aus:


```
public class AdresseDAO {

    public static void insert(EntityManagerFactory emf, Adresse adresse) {
        EntityManager manager = emf.createEntityManager();
        EntityTransaction tx = manager.getTransaction();
        tx.begin();
        manager.persist(adresse);
        tx.commit();
        manager.close();
    }

//... jeweils weitere Methoden für update, delete und Suche nach bestimmten Datensätzen.
```

[/code]


----------

