创建 blob - java 堆 space

creating blob - java heap space

我正在将 multipartFile 从控制器传递到服务并在服务内部传递 尝试从此 multipartFile 创建 Blob。问题是我使用的文件非常大 (4-5 gb),我收到 "java heap space" 错误(不,我无法为应用程序分配更多内存)

有什么方法可以流式传输吗? 我正在使用 java 7

服务代码:

def uploadFile(MultipartFile file){
    Sql sql = utilsService.retrieveSQLFromDataSource()
    Blob blob = dataSource.connection.createBlob()
    blob.setBytes(1, file.bytes)
    ...
}

这是相关部分 - 我通过重复写入一个小块来模拟一个大 BLOB。

重要的部分是创建 temporary BLOB

def bytes = data.getBytes()
BLOB tempBlob = BLOB.createTemporary(con, true, BLOB.DURATION_SESSION);
def os = tempBlob.setBinaryStream(0);
20000.times { 
 os.write(bytes,0,bytes.size())
}
os.close()
int len = tempBlob.length()
println "length $len"

stmt.setBLOB (1,tempBlob)

stmt.execute()