BLOB / CLOB und Hibernate... Ratschläge benötigt

internet

Top Contributor
Hallo zusammen,

aktuell speichere ich Dateipfade zu meinen Sharedrive in meiner Datenbank.

Das funktioniert zwar auch, aber ich sehe hier mittlerweile zwei größere Risiken:
- Datenschutz
- Umzug der Datenbank / Backup Datenbank ist mit einem größeren Aufwand verbunden, da die ganzen Files (ShareDrive) ebenfalls umgezogen werden müssen.

Ich hatte vor einigen Jahren mal gelesen, dass es besser wäre die Pfade in der DB zu speichern.
Von anderen Entwicklern höre ich nun aber, dass diese seit Jahren als CLOB speichern.
Bilder in einem Chat bpsw. speichere ich bereits als Base64 Code und gebe in der GUI dann einfach diesen aus - funktioniert soweit auch ganz gut...

Ich würde ebenfalls das Speichern direkt in der DB bevorzugen.

Um was für Dateien geht es?
Ich speichere überwiegend Bilder (Profilbilder, Bild zu Artikel usw) ab. Aber auch PDF´s (bspw. Rechnungen).
Ich denke maximale Größe ist so 10 MB

Nun aber meine Fragen:
1) Was sollte ich als Datentyp nehmen? BLOB oder CLOB. BLOB speichert Binäre Daten, CLOB nur Text.
2) Wie würde das mittels JPA / Hibernate aussehen?
3) Wie sieht es bei Bildern aus? Aktuell speichere ich direkt 2 Bilder ab: a) Original b) Thumbnails... Um die Ladezeit zu verkürzen, lade ich oftmals nur das Thumbnail.
4) Dem User möchte ich eine Übersicht zurückgeben mit dem verbrauchen Speicher. Wie mache ich das mit BLOBs / CLOBs? Soll ich hier einfach die Filegröße speichern? Die Größe des Files lässt sich ja dann schlecht direkt aus der DB Tabelle/ Spalte errechnen

Vielen Dank
 

internet

Top Contributor
Ok, also ich denke die ersten zwei Fragen konnte ich klären: Wie sieht es bei den anderen aus?

Nun aber meine Fragen:
1) Was sollte ich als Datentyp nehmen? BLOB oder CLOB. BLOB speichert Binäre Daten, CLOB nur Text.
BLOB scheint die richtige Wahl zu sein

Nun aber meine Fragen:

2) Wie würde das mittels JPA / Hibernate aussehen?

[CODE lang="java" title="@Lob @Column(name = "photo", columnDefinition="BLOB") private byte[] photo;"]@Lob
@Column(name = "photo", columnDefinition="BLOB")
private byte[] photo;[/CODE]

3) Wie sieht es bei Bildern aus? Aktuell speichere ich direkt 2 Bilder ab: a) Original b) Thumbnails... Um die Ladezeit zu verkürzen, lade ich oftmals nur das Thumbnail.
???

4) Dem User möchte ich eine Übersicht zurückgeben mit dem verbrauchen Speicher. Wie mache ich das mit BLOBs / CLOBs? Soll ich hier einfach die Filegröße speichern? Die Größe des Files lässt sich ja dann schlecht direkt aus der DB Tabelle/ Spalte errechnen
???
 

Oneixee5

Top Contributor
4) Dem User möchte ich eine Übersicht zurückgeben mit dem verbrauchen Speicher. Wie mache ich das mit BLOBs / CLOBs? Soll ich hier einfach die Filegröße speichern? Die Größe des Files lässt sich ja dann schlecht direkt aus der DB Tabelle/ Spalte errechnen
Bei Oracle gibt es dafür Abfragen ansonsten ist Filegröße abspeichern vermutlich am schnellsten. Warum sollte sich die Größe nicht aus DB Tabelle/ Spalte errechnen lassen? ich sehe das als eine Möglichkeit.
 

internet

Top Contributor
Ich würde den Weg über die zusätzliche Spalte gehen, das dürfte wesentlich portabler sein.
Wie meinst du das genau?

Mein Ansazt war, dass ich die Filegröße beim Speichern / Erstellen des BLOBs direkt in einer Spalte hereinschreibe.

Die Größe des Files lässt sich ja dann schlecht direkt aus der DB Tabelle/ Spalte errechnen
Ich meinte damit die Größe des BLOBs...
 

mihe7

Top Contributor
Mein Ansazt war, dass ich die Filegröße beim Speichern / Erstellen des BLOBs direkt in einer Spalte hereinschreibe.
Ja, das meinte ich. Mein Kommentar sollte sich eigentlich als Ergänzung auf
Bei Oracle gibt es dafür Abfragen ansonsten ist Filegröße abspeichern vermutlich am schnellsten.
beziehen.
Ich meinte damit die Größe des BLOBs...
Das geht in Oracle via dbms_lob.getlength().
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
B Input/Output InputStream (JSch) in OutputStream (Blob) überführen Java Basics - Anfänger-Themen 8
A POI Einlesen Excel Workbook aus BLOB oder von URL anstatt aus Filesystem ? Java Basics - Anfänger-Themen 3
G JPEG aus Blob als ImageIcon anzeigen Java Basics - Anfänger-Themen 5
G Gezipten Blob auslesen Java Basics - Anfänger-Themen 6
F BLOB ausgeben Java Basics - Anfänger-Themen 18
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
I JPA / Hibernate "Predicate" kombinieren in der gleichen Query Java Basics - Anfänger-Themen 1
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
D hibernate annotation Java Basics - Anfänger-Themen 2
D hibernate: string vs setparameter Java Basics - Anfänger-Themen 1
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
Todesbote Int Array mit Hibernate in Datenbank speichern. Java Basics - Anfänger-Themen 2
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
I Hibernate Java Basics - Anfänger-Themen 4
T Hibernate Fehlermeldung Java Basics - Anfänger-Themen 9
D [Hibernate] Objektinhalte auslesen Java Basics - Anfänger-Themen 8
N Hibernate "Hello World" Tutorial gesucht Java Basics - Anfänger-Themen 9
F Logging von Hibernate-Statements und Glassfish Java Basics - Anfänger-Themen 2
G Maps und Hibernate - Performancefrage Java Basics - Anfänger-Themen 2
G hibernate . tutorial prob . Java Basics - Anfänger-Themen 4
G org.hibernate.MappingException:An AnnotationConfiguration. Java Basics - Anfänger-Themen 3
G [Hibernate] Node to traverse cannot be null Java Basics - Anfänger-Themen 3
G java.lang.IllegalArgumentException -> Hibernate Java Basics - Anfänger-Themen 2
G Hibernate, JDO und Alternativen Java Basics - Anfänger-Themen 4
G [Hibernate] Richtiger ColumnType Java Basics - Anfänger-Themen 2
G [Hibernate] Aus SQL-Statement Entities erzeugen Java Basics - Anfänger-Themen 2
G [Hibernate] Constraints über mehrere Tabellen Java Basics - Anfänger-Themen 2
G [Hibernate] Could not find a setter for property Java Basics - Anfänger-Themen 2
M [Hibernate] "Illegal start of expression"-Fehler b Java Basics - Anfänger-Themen 2
B Hibernate - DB2 - Java Java Basics - Anfänger-Themen 3
M [Hibernate]: Cascade-Frage Java Basics - Anfänger-Themen 4
S Hibernate Session: Wie in alle Klassen Java Basics - Anfänger-Themen 19
M [Hibernate] Speichern von ManyToOne-Beziehungen in der DB Java Basics - Anfänger-Themen 12
G JTable aus Hibernate Zeile löschen Java Basics - Anfänger-Themen 4
H [Hibernate] HibernateSessionFactory Pfad setzen Java Basics - Anfänger-Themen 4
G [Hibernate] Dynamischer Datenbankpfad Java Basics - Anfänger-Themen 4
G [Hibernate] Laden aus DB funktioniert nicht Java Basics - Anfänger-Themen 8
G [Hibernate] Beschränkte Selektion Java Basics - Anfänger-Themen 2
G [Hibernate] StaleStateException beim Löschen Java Basics - Anfänger-Themen 3
G Einfacher Anfang mit Hibernate Java Basics - Anfänger-Themen 4
F [Hibernate] Debug INFO Einstellungen Java Basics - Anfänger-Themen 5
F [Hibernate] Alle Objekte laden aus der DB laden Java Basics - Anfänger-Themen 6
F [Hibernate] Id aus DB auslesen Java Basics - Anfänger-Themen 5
C Hibernate und Mandantenfähigkeit Java Basics - Anfänger-Themen 7
G hibernate tutorial Java Basics - Anfänger-Themen 3
R Verständnisproblem mit Hibernate Java Basics - Anfänger-Themen 2
N Hibernate will nicht so wie ich Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben