Esta es una respuesta tardía, pero para aquellos que aún buscan una solución, encontré un buen artículo de Thorben Janssen en el blog Thoughts on Java. El inconveniente es que es específico de Hibernate, pero parece que lo usa de todos modos. Básicamente, la solución es usar atributos de tipo de datos java.sql.Blob en su entidad
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
private String title;
@Lob
private Clob content;
@Lob
private Blob cover;
...
}
Y luego usa BlobProxy de Hibernate, que proporciona un OutputStream. Pero eche un vistazo al artículo aquí