In den letzten Tagen habe ich wieder versucht einen neuen Build Prozess für meine Projekte zu installieren.
Während ich lange Zeit unsere Builds mit Cruisecontrol durchgeführt habe, hat mir das Werkzeug in den letzten Monaten immer mal wieder Probleme gemacht. Zeitweilig ist der Server unerklärlich abgestürzt (Memory Problem ?), bei der Überwachung gab es Probleme mit Sonderzeichen und die Konfiguration war über Kommandozeile nicht gerade komfortabel. Von daher hatte ich mich nach alternativen umgesehen und bin dabei auf ein Werkzeug Namens Hudson gestoßen.
Hudson ist eine Java Webanwendung, die auf einem einfachen WebContainer lauffähig ist. Sowohl die Konfiguration als auch die Kontrolle erfolgt komplett über eine Weboberfläche.
.
Besonderes Feature für mich war dabei, das Hudson out-of-the-box Support für Maven2 Projekte bietet.
In den letzten Jahren ist bei Hibernate zur ersten Wahl geworden wenn es um Persistenz im Java Bereich geht. Die hohe Qualität, die gute Dokumentation und die hohe Verbreitung hat die Datenbankanbindung im Gegensatz zu klassischen DAO Objekten deutlich vereinfacht.
In letzter Zeit sind mir aber ein paar Zweifel gekommen. In einigen Projekten entstanden mit Hibernate einige Probleme die nicht so ohne weiteres in den Griff zu bekommen waren. Von daher hier mal meine Erfahrungen wann man Hibernate einsetzen sollte, und wann man es besser sein lässt:
Hibernate sollte man einsetzen wenn
- Man kann ausgehend von einem guten Objektmodell das Datenbankmodell frei gestalten
- Es spricht nichts gegen den Einsatz von technischen Primärschlüsseln in der Datenbank
- Die eingesetzte Datenbank wird direkt von Hibernate unterstützt
- Die Anwendung wird komplett neu entwickelt
Hibernate sollte man nicht einsetzen
- Das Datenbankmodell ist vorgegeben und ist nicht änderbar
- Es müssen fachliche Primärschlüssel (evtl. sogar über mehrere Spalten) eingesetzt werden
- Die Anwendung ist bereits vorhanden es gibt evtl. sogar SQL Statements
- Die Datenbanktabellen müssen auch von anderen Anwendungen genutzt werden