Was bisher so geschieht…

Moin…
Ich wollte mal wieder ein wenig Feedback geben, woran ich bisher so sitze…
Letztendlich bin ich endlich mit einer schönen Datenbankklasse ausgestattet, die mir auch die Dinge bietet, auf die ich angewiesen sein werde – ob da jetzt noch etwas dazu kommt, wird sich zeigen, aber erstmal reicht mir das, was bisher vorhanden ist. Zudem bin ich auf ein paar Besonderheiten von JSP/Java und MySQL gestossen, die in meinen Augen recht unlogisch sind, aber nunja, vielleicht gibt sich das noch.
Mein bisheriger Plan ist es, jetzt erstmal die Grundfunktionen des Servers mit einer einfachen HTML Oberfläche zu erstellen, um dann den Client mit Hilfe von YUI dynamischer zu gestallten.
Aber jetzt erstmall ein Überblick über die Klassen:

Die statische Config Klasse ist erst später hinzugekommen, sodass ich die Attribute aus der Datenbankklasse, welche den Zugriff betreffen wohl dann entferne und die Benutzerdaten zentral in der Config Klasse speichere.
Ich habe jetzt auch schon erste Tests mit einer Session hinter mir, aber das Klassendesign ist noch sehr gewöhnungsbedürftig ^^.

Die Klasse TOOLS soll einfach zur Sammlung verschiedener Funktionen dienen.
Die md5 Methode dient einfach dazu, einen gegeben String als md5 Summe zurückzugeben. Dies brauche ich u.a. für die Passwörter.
Sobald ich die erste HTML Oberfläche habe (die dann einfaches Anmelden, Erstellen und Auflisten von Einträgen beherrschen wird, werd ich erste Funktionstests machen.
Das Schöne, was ich an Eclipse gefunden habe ist, dass man per Vorgabe einfache TextKlassen für Klassen erstellen kann. Dort werden alle Methoden einmal aufgerufen.
Ob das für ein Unit Testing ausreicht muss ich dann noch mal sehen.

Achja… Java und MySQL: Die erhaltenen Einträge aus der Datenbank speichert Java in einem sog. Resultset. Mit der methode next() kann man die verschiedenen Einträge durchblättern. Das komische ist nur, dass wenn – nachweislich – nur ein Eintrag vorhanden ist, muss man dennoch einmal die next() methode aufrufen.
Also muss man von 0. Eintrag auf den 1. blättern? O_o. Meiner Meinung nach irgendwie unnlogisch. Dementsprechend hat mich das auch ein wenig aufgehalten.
Betroffen war u.a. diese Methode aus der Klasse User:

public void load(){
    this.DB.Query("SELECT `ID`, `password` " + 
                   "FROM `users` WHERE `name` = '"+this.name+"' ");
    try {
        ResultSet res = this.DB.getLastResult();
        System.out.println(res.toString());
        res.next();
        this.ID = res.getInt("ID");
        this.password = res.getString("password");
    }catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Ob ich jetzt das “erste Blättern” in der getLastResult() unterbringe habe ich mir noch nicht überlegt.
Wünsche allen frohes Schaffen und ein schönes Rest-Wochenende!

2 Replies to “Was bisher so geschieht…”

  1. Hallo Philipp,
    Du solltest die Datenbank-Abstration nicht selbst bauen und vor allem nicht statisch. Abgesehen von Kleinigkeiten, wie das fehlende, korrekte Schließen des ResultSets, handelst Du Dir unnötigen Erweiterungs- und Pflege-Aufwand ein, der Dich auf Dauer eher verlangsamt, als dass er Dir hilft.
    Darüber hinaus möchte ich die Kompositionsbeziehung von User zu DataBase in dem Sinne hinterfragen, als dass die beiden Objekte in einer typischen Java EE-Architektur keinen Bezug zueinander haben sollten – und wenn doch, dann bestimmt keine Kompositionsbeziehung, die den Lebenszyklus von User und DataBase aneinander kettet.
    Die Verwaltung der Datenbank-Verbindungen übernimmt im Java EE-Umfeld jederzeit gern ein Container. Du könntest für Dein Projekt beispielsweise einen JPA-Provider wie zum Beispiel TopLink Essentials oder Hibernate einsetzen.
    Meiner Meinung nach solltest Du die Persistenz mittels JPA realisieren und lieber die Zeit in Kauf nehmen, Dich damit auseinander zu setzen.
    Gruß,
    Phillip

  2. Ich gebe zu, jetzt bin ich ein kleines Bißchen vor den Kopf gestoßen.
    Ich könnte jetzt sage, dass habe ich immer so gemacht – mache ich aber nicht… will ja was neues Lernen, außerdem habe ich mit Willem diese Diskussion schon mehrmals geführt.
    Letztendlich habe ich mal ein wenig in der Doku gelesen, hauptsächlich auf der Sun Homepage über JPA und über GlassFish. Es scheint wirklich vieles zu vereinfachen. Ich werde mal sehen, dass ich morgen mal das soweit umschreiben kann, dass es auf diesem Wege läuft.
    Deinen Artikel aus dem JavaSPEKTRUM habe ich auch schon gefunden :-D. Denke damit habe ich erstmal genug Infos. Meld mich wenn ich schlauer bin 🙂

Leave a Reply