2010-11-21 2 views
0

Ich habe Web-Service, dieMapping byte [] in den Ruhezustand und das Hinzufügen von Datei Chunk Chunk

von Chunks 100 Mb Videodatei erhält
public void addFileChunk(Long fileId, byte[] buffer) 

Wie kann ich diese Datei speichern in Postgresql Datenbank Hibernate?

Die Verwendung von JDBC ist sehr einfach. Ich würde den folgenden Code innerhalb meiner Web-Service-Methode verwenden:

LargeObject largeObject = largeObjectManager.Open(fileId, LargeObjectManager.READWRITE); 
        int size = largeObject.Size(); 
        largeObject.Seek(size); 
        largeObject.Write(buffer); 
        largeObject.Close(); 

Wie kann ich die gleiche Funktionalität mit Hibernate erreichen? und speichern Sie diese Datei nach Chunk?

Speichern jeder Datei Block in einer separaten Zeile als Bytea scheint mir nicht so schlaue Idee. Bitte um Rat.

+0

Warum umgehen Sie Hibernate einfach nicht dafür? –

+0

Weil dies der Spring Web Service ist und ich bereits Hibernate und Transaction Management Bean injected und weit über andere Methoden hinweg verwendet habe. Daher möchte ich die neue JDBC-Verbindung nicht nur zum Speichern dieser Datei öffnen. –

Antwort

1

Es ist jetzt ratsam, 100 MB Dateien in der Datenbank zu speichern. Ich würde sie stattdessen im Dateisystem speichern, aber wenn man bedenkt, dass Transaktionen aktiv sind, scheint die Verwendung von Servlets sinnvoll.

  1. http-Anfrage verarbeiten, so dass die Datei (empfangene) an einem bestimmten Ort gespeichert wird.
  2. offene Transaktion, persistent Datei Metadaten einschließlich temporären Speicherort, schließen Transaktion
  3. mit einem externen Prozess, der temporäre Dateien überwachen wird, übertragen Sie diese Datei an das endgültige Ziel, aus dem es für den Benutzer über einige Servlet verfügbar sein wird.
+0

Ich weiß nicht, warum es nicht ratsam wäre, sie als große Objekte in PostgreSQL zu speichern. Die LOB-Schnittstelle bietet Ihnen eine Dateisystem-ähnliche Streaming-Schnittstelle, so dass Sie nach Belieben auf Eingaben oder Ausgaben zugreifen können. Es funktioniert gut und Sie könnten sogar Indizes erstellen, um Offsets wichtiger Daten zu indizieren, wenn Sie es benötigen. –