M-S*_*ley 5 java hibernate spring-mvc oracle11g jpa-2.2
我有一个 JPA 实体类,它包含一个像这样的 blob 字段:
@Entity
public class Report {
private Long id;
private byte[] content;
@Id
@Column(name = "report_id")
@SequenceGenerator(name = "REPORT_ID_GENERATOR", sequenceName = "report_sequence_id", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REPORT_ID_GENERATOR")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Lob
@Column(name = "content")
public byte[] getContent() {
return content;
}
public void setContent(byte[] content) {
this.content = content;
}
}
Run Code Online (Sandbox Code Playgroud)
我在数据库中的记录中插入了一些大数据(超过 3 个演出)(使用 DBMS 过程)。
应用程序用户应该能够下载这些记录的内容,因此我实现了一种将获取的结果流式传输到客户端浏览器的方法。
问题是,由于 JPQL 选择查询倾向于首先从 DB 获取整个对象,然后将其提供给应用程序,因此每当我尝试使用 JPA 访问此记录时,我都无法分配足够的内存异常。
我已经看到使用 JDBC 连接尝试从数据库流式传输数据的一些解决方案,但我找不到任何 JPA 特定的解决方案。
有没有人知道我应该如何解决这个问题?
由于您使用关系数据库,将大型(千兆字节)数据文件作为 BLOB 存储在数据库中并不是一个好的做法。相反,常见的做法是数据本身以文件的形式存储在服务器(可能是 FTP)上,而元数据(文件的路径以及服务器等)存储在数据库列中。在这种情况下,将这些数据传输到客户端变得更加容易。
| 归档时间: |
|
| 查看次数: |
5928 次 |
| 最近记录: |