BFILE 可以与 JPA 一起使用在 Oracle 和 Spring 之间共享图像吗?

A E*_*A E 5 java oracle jpa spring-mvc eclipselink

我正在开发一个由数据库支持的 Web 应用程序,该应用程序将包含数百万张图像作为其主要内容。我正在使用 Spring MVC 用 Ja​​va 编写,并使用 JPA (EclipseLink) 连接到 Oracle 11g (11.2.0.1.0) 数据库。Web 服务器(运行 Tomcat)和数据库服务器是不同的机器。

我目前在我的对象模型中有这个代码:

@Lob @Basic(fetch=FetchType.LAZY)
@Column (name = "data_file")
private byte[] dataArray;
Run Code Online (Sandbox Code Playgroud)

这会在我的表中产生一个 BLOB 列。方便的是,我可以使用 Oracle SQL developer 直接从数据库查看图像。

问题是,为了在 web 应用程序中显示图像,我需要有一个实际文件,最重要的是,我的理解是 Spring 要求这个文件位于 web 应用程序目录中,或者至少在我专门将其配置为允许访问的其他一些位置。这意味着我需要创建图像的临时副本,以便向用户显示它们。我宁愿将图像只保存在数据库和 Web 应用程序都可以访问的一个位置,如果可能,我希望允许其他程序或机器用户进行读取访问。

我认为 BFILE 类型旨在允许数据库管理外部文件甚至远程文件。我可以将 BFILE 与 JPA 一起使用吗,它会满足我的需求吗?如果是这样,我将如何创建到 BFILE 列的映射?

我的目标是:

  1. 无需复制图像即可显示。
  2. 文件在 Oracle 中作为文件(而不是字符串路径)进行管理。
  3. 我可以使用JPA。
  4. 文件位于允许读取访问的普通磁盘位置。
  5. 我可以在 Oracle SQL Developer 中查看图像。