【发布时间】:2017-11-09 06:55:05
【问题描述】:
我想在数据库中存储大量二进制数据。 客户端应该能够检查内容大小、创建日期等元数据 以及流式传输内容。
使用 JPA,持久化元数据非常简单。
@Entity
public class MyData {
@Id
private String name;
private Timestamp creationDate;
private long contentSize;
但是如何对内容进行建模? 如果我会使用
byte[] content;
那么完整的内容必须保存在内存中,这是不需要的。
使用 Hibernate,以下工作,但其他 JPA 提供程序,例如 openJPA,
抱怨content 既不持久也不注释@Transient。
@Lob
@Basic(fetch=FetchType.LAZY)
private java.sql.Blob content;
问题:是否有允许流式传输的便携式解决方案 无需将全部内容保存在字节数组中?
【问题讨论】:
-
便携?不。 JPA 规范中没有任何内容。所有 JPA 提供者都有自己支持的类型和支持的处理方式。正如您所说,“byte []”不是合适的类型,但是 Blob 也不是,因为它与存在的 JDBC 驱动程序相关联。像 Reader 或 InputStream 这样的东西更有意义......如果你的 JPA 提供者支持它们
标签: java hibernate jpa openjpa