将SXSSFWorkbook保存为blob的最佳方法是什么?

我正在使用Apache POI SXSSFWorkbook生成一个.xlsx excel电子表格,但不是下载它,我需要将该文件保存到一个blob。 我也需要这个能够扩展,所以如果我有60万以上的logging放入文件,我需要避免内存不足的错误。 这是代码

SXSSFWorkbook workbook = new SXSSFWorkbook(100); addContent(); 

通常当输出到一个文件,我做类似的东西

 OutputStream output = response.getOutputStream(); workbook.write(output); 

但在这种情况下,我不需要它去到一个文件,只是到数据库的blob,除了没有办法将SXSSFWorkbook保存到一个blob。 我可以将工作簿保存到OutputStream中,并尝试将其保存到Blob中,但通常需要使用inputStream。 是否有一个实用程序将outputStream转换为inputStream?

使用来自@kiwiwings的build议我有以下工作:

 Blob binario = Hibernate.getLobCreator(session).createBlob(new byte[0]); SXSSFWorkbook excel = ... excel.write(binario.setBinaryStream(0)); 

就是这样。

为了将来的参考,我最终把它放到一个文件,然后从中读取。

 OutputStream output = new FileOutputStream(file); workbook.write(output); workbook.dispose(); output.flush(); output.close(); InputStream input = new FileInputStream(file); Blob blob = dao.saveInputStreamToBlob(input); 

然后在DAO中使用hibernate session getLobHelper并从inputStream创buildblob。 性能是好的,我只testing了25000左右的logging,但没有记忆问题。