Това е късен отговор, но за тези, които все още търсят решение, намерих добра статия от Thorben Janssen в блога Thoughts on Java. Недостатъкът е, че е специфичен за Hibernate, но изглежда го използвате така или иначе. По принцип решението е да използвате атрибути на тип данни java.sql.Blob във вашия обект
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
private String title;
@Lob
private Clob content;
@Lob
private Blob cover;
...
}
След това използвате BlobProxy на Hibernate, който предоставя OutputStream. Но погледнете статията тук