Questa è una risposta tardiva, ma per chi è ancora alla ricerca di una soluzione, ho trovato un buon articolo di Thorben Janssen sul blog Thoughts on Java. Lo svantaggio è che è specifico di Hibernate, ma sembra che tu lo usi comunque. Fondamentalmente la soluzione è usare gli attributi del tipo di dati java.sql.Blob nella tua entità
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
private String title;
@Lob
private Clob content;
@Lob
private Blob cover;
...
}
E poi usi BlobProxy di Hibernate, che fornisce un OutputStream. Ma dai un'occhiata all'articolo qui