我有一个网络服务,可以按 block 接收 100 Mb 视频文件
public void addFileChunk(Long fileId, byte[] buffer)
如何使用 hibernate 将此文件存储在 Postgresql 数据库中?
使用常规 JDBC 非常简单。我将在我的 Web 服务方法中使用以下代码:
LargeObject largeObject = largeObjectManager.Open(fileId, LargeObjectManager.READWRITE);
int size = largeObject.Size();
largeObject.Seek(size);
largeObject.Write(buffer);
largeObject.Close();
如何使用 Hibernate 实现相同的功能?并按 block 存储该文件?
在我看来,将每个文件 block 存储在单独的行中作为 bytea 似乎不是一个明智的主意。皮斯的建议。
最佳答案
现在建议在数据库中存储 100MB 文件。我会将它们存储在文件系统中,但考虑到事务处于 Activity 状态,使用 Servlet 似乎是合理的。
- 处理 http 请求,以便将文件(收到的文件)存储在某个临时位置。
- 打开事务、保留文件元数据(包括临时位置)、关闭事务
- 使用一些监视临时文件的外部进程,将该文件传输到其最终目的地,用户可以通过一些 Servlet 从那里使用该文件。
关于java - 在 Hibernate 中映射 byte[] 并逐 block 添加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240970/