java - 在 Hibernate 中映射 byte[] 并逐 block 添加文件

标签 java hibernate postgresql jdbc jakarta-ee

我有一个网络服务,可以按 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 似乎是合理的。

  1. 处理 http 请求,以便将文件(收到的文件)存储在某个临时位置。
  2. 打开事务、保留文件元数据(包括临时位置)、关闭事务
  3. 使用一些监视临时文件的外部进程,将该文件传输到其最终目的地,用户可以通过一些 Servlet 从那里使用该文件。

关于java - 在 Hibernate 中映射 byte[] 并逐 block 添加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240970/

相关文章:

java - 在 Eclipse 中调试 Java 时移动指令指针

java - 优化此代码以查找连接的组件?

java - 如何从 Java 方法返回 2 个值?

java - 将从 Hibernate Native Query 返回的值映射到模型

java - 使用 Hibernate 将当前日期 (Java) 与数据库 (sql) 中的时间戳进行比较

java - 如何在不使用任何映射表的情况下将 Hibernate 中的集合映射到 PostgreSQL DB?

mysql - 物化 View 的数据库从 MariaDB 迁移到 PostgreSQL

sql - 使用临时表替换 WHERE IN 子句

java - TCP 按字节发送/检索 header

postgresql - Postgres : The best way to optmize "greater than" query