# Was nehmen für eine Datenbankapplikation mit Webinterface



## Tikalla (30. Mai 2008)

Hallo,
hier mein Problem:

Ich soll eine Datenbankapplikation erstellen, bei welcher das Front-End (die ganzen Formulare) per Web-Browser zugänglich ist. Da ich bisher immer nur Applikationen programmiert habe, wo das Front-End als ausführbare Datei auf dem Netzlaufwerk liegt, bin ich momentan etwas überfragt mit der Wahl meiner Mittel.
Das Ganze soll mit Java umgesetzt werden. Jetzt steh ich der Frage wie? Applet, JSP, JavaServerFaces,.....
Hat mir da jemand eine Anregung?

Noch zu meiner Person: ich bin Praktikant und soll das im Rahmen meines Praktikums erledigen. Programmiere seit gut 2 Jahren mehr oder weniger mit Java, aber halt nur Applikationen, die via JDBC/ODBC an eine DB angebunden sind. Die multi-tier Struktur bei Java EE ist mir noch nicht 100% klar.

Vielen Dank schon mal im voraus.


----------



## ms (30. Mai 2008)

Vielleicht kannst du noch kurz was zur Applikation selbst sagen.
Worum geht es?
Welche anderen System spielen eine Rolle.
Wie viele User?
...

ms


----------



## The_S (30. Mai 2008)

Generell: Zu Applets würde ich bei sowas abraten.


----------



## jensa (30. Mai 2008)

nunja wie gut sind deine kentnisse im bereich JSF?
ansonsten würde ich sagen wenn du dort gute kenntnisse hast nimm JSF wenn die Anorderung eine Datenbankapplikation ist für große Datenmengen & mehrere Anwender.

Solltest du noch keine guten / kaum JSF kenntnisse haben so würde ich dir zu JSP raten oder beispielsweise em GWT o.ä. Damit kannst binnen kurzer zeit schon gute ergebnisse erzielen.

aber wie ms bereits meinte nähere infos wären gut für genau aussagen.


----------



## Tikalla (30. Mai 2008)

Vielen Dank für die Antworten.


Es geht um ein Tool zur Ressourcenplanung (Schwerpunkt Planung der Personalkapazitäten).
Es soll nur zur groben Übersicht dienen, d. h. es sind geplante h pro Projekt und Liefertermin angegeben und der Abteilungsleiter will nun prüfen, ob er mit seinen Mitarbeitern in der Lage ist den Liefertermin zu halten, dazu werden noch einige Berichte benötigt wie:
-wer arbeitet an welchem Projekt
-wie weit ist das Projekt fertiggestellt (in Prozent)? -> kann der Liefertermin gehalten werden?
-welche Projekte sind kritisch
-die geleisteten Stunden pro Mitarbeiter und Projekt (sollen aus einer anderen Applikation importiert werden)

Das Back-End soll ein PostgreSQL-Server sein. 
Die Berichte sollen allen Mitarbeitern zugänglich sein (ca. 150). Das Planen und Importieren sollen momentan 5 Personen erledigen. Es gibt einen Prototypen mit Access-Front-End, leider müßte dazu jeder MA Access installiert haben. Außerdem liegt das Access-Front-End lokal auf dem Client und ist somit schlecht zu administrieren. Daraus ist dann die Anforderung an ein Front-End entstanden, welches rein im Browser läuft. Momentan sind ca.40 Formulare in Access vorhanden.

Ich selbst habe noch nie mit JSP / Java Server Faces programmiert. Daher kann ich überhaupt nicht abschätzen was nehmen, außerdem sollte ich relativ schnell Ergebnisse vorweisen. Hat jemand eine Idee?


----------



## robertpic71 (30. Mai 2008)

Zuerst noch ein paar Zusatzfragen:

1.) Wieviel Zeit steht denn ungefähr zu Verfügung?
2.) Wie schauen die Reports aus? (im Access Prototyp)
2a.) Sind das programmierte Tabellenausgaben
2b.) oder Reports mit dem Generator von Access
3.) Wieviele Datenbankdateien hast du ungefähr?

Abhängig von den Antworten 1 und 3 stellt sich dann die Frage ob man für die Datenbankverwaltung ein Persitenzframework verwenden soll. Dazu kann man ab einer gewissen Größenordnung eigentlich nur raten. Wobei du die Einarbeitungszeit beim ersten Projekt wohl nicht mehr aufholen kannst.

Wie schon von jensa erwähnt, wird man als Desktopumsteiger wahrscheinlich mit einem Ajax-Framework, schneller Ergebnisse liefern können. Viele dieser Framworks versuchen das Model der Desktopprogrammierung (MDA, Eventgesteuert, Java API für GUI-Komponenten) auch für Webapplikationen zugänglich zu machen.

Es gibt mittlerweile zahlreiche Ajax-Framworks, ich habe mich vor 1,5 Jahre für 
ZK entschieden.

Neben dem Desktopprogrammiermodel könnten auch die Reportkomponenten von ZK nützlich für dich sein.

- Es werden fast alle Jfreecharts als Komponenten angeboten, siehe z.B.  >> hier <<

- ZK hat auch einer JasperReport Komponente. Damit könnte man Reports (ähnlich wie in Access)
mit JasperReport erstellen und den Report in der Webappliaktion befüllen und rendern (als HTML/XLS/PDF) 
lassen. Siehe auch >> hier <<.

- Außerdem gibt es noch die Komponenten Timeline und Timeplot, welche für deine Auswertungen
hilfreich sein könnten. Siehe z.B. >> hier <<

>> Hier << noch ein kleiner Vergleich Struts/JSF/ZK inkl. Sourcen. Es fehlt noch die Datenbankanbindung in der PersonDAO.

Wenn man die GUI nicht mit XML beschreiben will, reicht auch die Minimalvariante:


```
<window id="simpleWindow" use="mein.package.JavaKlasse">
```

Den Rest könnte man in Swingmanier erledigen, das window wäre sozusagen das rootpane wo man dann alle anderen Komponenten anhängt (auch andere Windows).


```
public class JavaKlasse extends Window {

  public void onCreate() {
    this.appendChild(new Label("Label"));
    ...
}
```

Wobei ich die XML-Beschreibung vorziehe und zum Desktopfeeling noch ein paar Webvorzüge wie die (MV)EL's verwende.


```
<label value="Status:"/>
<combobox id="status">
   <comboitem label="${each.name}" value="${each}"
	forEach="${JDBC1.getSQL('select * from statuses')}" />
</combobox>
```

In diesem Fall wird die Comobox von direkt von der JDBC-Quelle geladen. Schöner (wg. MVC) und genauso möglich ist beim Model die DAOKlasse anzugeben, also model="@{controller.StatusDAO.getAllStatuses}".

/Robert


----------

