我想将巨大的二进制数据存储在数据库中。 客户端应该能够检查内容大小,创建日期等元数据 以及流式传输内容。
使用JPA,持久保存元数据非常简单。
@Entity
public class MyData {
@Id
private String name;
private Timestamp creationDate;
private long contentSize;
但是如何对内容进行建模? 如果我愿意的话
byte[] content;
然后必须将完整内容保存在内存中,这是不需要的。
使用Hibernate,以下工作,但其他JPA-Providers,例如openJPA,
抱怨content
既不是持久的也不是注释@Transient
。
@Lob
@Basic(fetch=FetchType.LAZY)
private java.sql.Blob content;
问题:是否有允许流式传输的便携式解决方案 不需要将整个内容保存在字节数组中吗?
答案 0 :(得分:0)
不确定您是单独使用JPA还是使用Spring。如果是Spring,那么看看Spring Content?该库提供了一个抽象,用于处理可跨存储移植的内容(包括基于流的API的大量内容); RDBMS,File,S3,Mongo的GridFS。在RDBMS的情况下,它以内存有效的方式管理流很困难,因此您可以将内容延迟回流到调用客户端(在开放DB连接之外)。可能值得一看。