C'è un modo per leggere e scrivere da un blob
in blocchi usando Hibernate
. In questo momento sto ricevendo OutOfmemoryException
perché l'intero blob dati viene caricato in memoria in un byte[]
.Lettura/scrittura di dati BLOB in blocchi con Hibernate
Per essere più specifici, supponiamo di voler salvare un file di grandi dimensioni in una tabella di database denominata File
.
public class File {
private byte[] data;
}
Apro il file in un FileInputStream e poi? Come si comunica a Hibernate che è necessario eseguire lo streaming del contenuto e non fornire l'intero array byte[]
in una sola volta? Devo usare Blob
invece di byte[]
? In ogni caso, come posso trasmettere il contenuto in streaming?
Per quanto riguarda la lettura, c'è un modo posso dire che vanno in letargo (oltre il lazy loading lo fa) ho bisogno del blob da caricare in blocchi, in modo da quando posso recuperare il mio File
non dovrebbe darmi OutOfMemoryException
.
sto usando:
- Oracle 11.2.0.3.0
- Hibernate 4.2.3 finale
- driver Oracle 11,2
Come posso definire @Lob in hbm.xml (definiamo i nostri oggetti di dominio nei file hbm.xml)? – Atticus
Credo che l'annotazione @Lob sia facoltativa fintanto che si specifica type = "blob" –
Chi chiude il flusso? –