Wie bleibt die Anwendung schnell? Performance-Regressionstests mit Hibernate!

In einer typischen Java-Enterprise-Anwendung steht und fällt die Performance mit den Datenbankzugriffen. Im Java-Code kommt es darauf an, sowohl die Anzahl der Datenbank-Roundtrips als auch die Größe der Ergebnismengen klein zu halten. Dies zu erreichen ist mit JPA, Hibernate & Co. schwierig – eine optimierte Anwendung langfristig schnell zu halten, aber noch schwieriger.

Die typische Java-Enterprise-Anwendung, die hier gemeint ist, hat einen mehrschichtigen Aufbau einschließlich einer Datenzugriffsschicht, die per JPA/Hibernate/EclipseLink auf eine relationale Datenbank zugreift. Für eine hohe Performance ist natürlich auch das Datenschema sehr wichtig. Gut gesetzte Indexe und eine optimierte Datenbankkonfiguration sind eine wichtige Basis für schnelle Zugriffe und einen hohen Durchsatz.

Weiter lesen…

Spring 3, Hibernate 4 und Wicket 6: ein starkes Gespann

Ohne Vorkenntnisse ist es gar nicht so einfach, eine Web-Anwendung mit Spring, Hibernate und Wicket aufzusetzen. Dabei reichen dafür nur wenige Zeilen Java-Code.

Im Laufe des Jahre sind im Spring-Framework verschiedene Varianten entstanden, wie man eine Web-Anwendung aufsetzt. Inzwischen ist es möglich, auf externe XML-Konfigurationsdateien vollständig zu verzichten. Wie man konkret vorgeht, eine Spring-Anwendung mit Hibernate und Wicket aufzusetzen, zeigt dieser Artikel.

Weiter lesen…

Speicherverbrauch von JEE-Anwendungen: Ein Beispiel aus der Praxis

JPA bietet viel Komfort beim Laden und Bearbeiten von Daten aus einer relationalen Datenbank. Nur darf man bei allem Komfort nicht vergessen, dass bei jeder Operation hinter den Kulissen viel geschieht. Am Beispiel von EclipseLink in einer Wicket-Anwendung zeigt sich, dass man beim Thema Speicherverbrauch auf größere Überraschungen stoßen kann.

Der Ausgangspunkt dieser Geschichte sind OutOfMemoryExceptions, die eine Web-Anwendung nach einigen Tagen Betriebsdauer warf. Ein Blick per JConsole in das Innere der Anwendung zeigte schnell, dass die durchschnittliche Session eines Besuchers knapp ein Megabyte groß war: bei vielen Besuchern ein extrem hohen Wert. Wie konnte das geschehen?

Weiter lesen…

JEE 6: Keine schlechte Technologie, aber…

Seit der Veröffentlichung von JEE 6 scheinen die Befürworter des JEE-Standards gegenüber den Anhängern der Spring-Welt im Vorteil zu sein. Schließlich ist die JEE-Plattform inzwischen technologisch ausgereift. Da stellt sich die Frage, warum man von diesem Standard abweichen soll.

Konkurrenz zwischen verschiedenen Konzepten führt meistens zu immer besseren Lösungen auf beiden Seiten. Daher kann man als Java-Entwickler froh sein, dass es in der Java-Welt viele gute Produkte gibt. In der Welt der Frameworks für die Enterprise-Entwicklung konkurrieren derzeit vor allem JEE 6 und das Spring-Ökosystem. Und natürlich streiten die Befürworter beider Lager mit Vehemenz, welche Technologie die bessere ist.

Weiter lesen…

Tücken der Stapelverarbeitung mit JPA

Ist es möglich, eine komplexe Stapelverarbeitung um den Faktor 20 zu beschleunigen, einzig durch Hinzufügen einer Zeile Code? Ja – zumindest dann, wenn man zuvor diese Zeile vergessen und dadurch einen Performanceeinbruch um den Faktor 20 erlitten hat.

Manchmal ist es schon erstaunlich, welche Auswirkungen kleine Änderungen haben. Aber der Reihe nach und zum Mitdenken – vielleicht kommt jemand schon vor dem Ende des Artikels auf die Lösung…

Weiter lesen…