Skip to content

Verwendung von BLOBs mit Hibernate und PostgreSQL

Das Filesystem. Unendliche Weiten. Dies sind die Abenteuer des Paketes java.io… Ich steh nicht so auf Abenteuer beim produktiven Programmieren. Dateirechte, Pfade… um nur einige Probleme zu nennen. Daher wollte ich probieren, Bilder binär in die Datenbank zu schreiben. Daraus ist dieses kurze “HowTo” über das Speichern von binären Daten in PostgreSQL mit dem O/R Mapper Hibernate entstanden. Die Ausgabe erfolgt über ein Servlet und eine JSP.

Das Mapping

Nach einiger Recherche habe ich herausgefunden, dass sich der Postgres-Datentyp bytea am besten für diese Aufgabe eignet. Das ganze wird in Hibernate einfach wie folgt gemappt:

Die gemappte Klasse verwendet dann einfach nur den Datentyp byte[]. Inklusive Get/Set-Methoden sieht das dann so aus:

Das Servlet

ByteArray-Streams eignen sich gut zur Weiterverarbeitung. Als Beispiel dient das folgende Servlet, dass einfach das Image wieder ausgibt und eine hochgeladene Datei in die Datenbank schreibt. Für den Upload habe ich das Framework “commons-upload” von Apache.org verwendet.

Zuerst die Get-Methode zur Ausgabe des Bildes:

Und dann noch die POST Methode des Servlets:

Das JSP

Fehlt noch das passende JSP für den Upload:

Fazit:

Das Mapping funktioniert denkbar einfach, auch die Verarbeitung artet keineswegs in Probleme aus. Nun wird sich im Laufe der Zeit zeigen, ob das ganze auch performant ist.

[ad#artikel-werbung]

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.