【发布时间】:2014-09-15 10:16:46
【问题描述】:
我们的临时文件系统上存储了一个大文件,我需要使用 BufferedInputStream 读取那个大文件(可能是几个或几个 gig),如下所示
InputStream is = is = new BufferedInputStream(new FileInputStream(file));
这将有效地减少读取文件的时间并希望将文件保存到 DB (Oracle) 中的 BLOB。
这是真正的问题:
我不希望文件被完全读取到我的内存中,因为我正在进入内存不足并且想要读取块并将文件内容作为字节数组推送到我的 DB BLOB 列。
基本上,我的想法是消除将完整文件加载到内存并实现将文件保存到 BLOB 的开销(可能会附加到现有的 BLOB 内容左右)
有什么方法可以实现吗?
PS:我们使用 Hibernates 来保存 BLOB 文件
【问题讨论】:
-
为什么要在数据库中存储这么大的文件?
-
使用
preparedStatement.setBlob(int parameterIndex, InputStream inputStream)只需要提供输入流,不需要读入文件到mem -
在 Hibernate 世界中有什么相关的吗? Bcoz 我不想归结为 Prepared Statement 级别来测试它是否有效。
标签: java oracle hibernate jakarta-ee blob