如何将大量数据从数据库流式传输到客户端

时间:2017-11-09 06:55:06

标签: java hibernate jpa openjpa

我想将巨大的二进制数据存储在数据库中。 客户端应该能够检查内容大小,创建日期等元数据 以及流式传输内容。

使用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;

问题:是否有允许流式传输的便携式解决方案 不需要将整个内容保存在字节数组中吗?

1 个答案:

答案 0 :(得分:0)

不确定您是单独使用JPA还是使用Spring。如果是Spring,那么看看Spring Content?该库提供了一个抽象,用于处理可跨存储移植的内容(包括基于流的API的大量内容); RDBMS,File,S3,Mongo的GridFS。在RDBMS的情况下,它以内存有效的方式管理流很困难,因此您可以将内容延迟回流到调用客户端(在开放DB连接之外)。可能值得一看。