Was bisher so geschieht…
DB . Java . Personal . ToolingMoin…
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!
Related
2 comments
Leave a ReplyCancel reply
Archives
- August 2025
- November 2023
- February 2023
- January 2023
- April 2020
- January 2018
- December 2017
- May 2017
- February 2016
- September 2015
- December 2014
- August 2014
- June 2014
- March 2014
- February 2014
- September 2013
- August 2013
- July 2013
- November 2012
- October 2012
- September 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- August 2011
- July 2011
- June 2011
- May 2011
- January 2011
- August 2010
- July 2010
- June 2010
- May 2010
- January 2010
- November 2009
- October 2009
- September 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- September 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006

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
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 🙂